Compare commits

..

10 Commits

Author SHA1 Message Date
52aa441195 Update README 2023-12-04 20:06:28 -08:00
a15d3816dc Update README 2022-07-14 14:22:41 -07:00
ef270d2174 Add site metadata 2021-12-14 19:52:29 -08:00
a31553607e Update README 2021-06-08 22:35:56 -07:00
703d46381c Updating README.md 2019-04-28 12:34:45 -07:00
a9898f65a5 update license file 2019-04-28 12:00:52 -07:00
d1eb216af1 Updating README.md 2017-07-30 17:39:42 -07:00
58057a4b26 Updating README.md 2016-12-29 17:34:54 -08:00
e43ee17ece Updating README.md 2016-09-06 21:16:33 -07:00
23b8eb0906 Updating README.md 2016-09-06 21:14:13 -07:00
2 changed files with 28 additions and 14 deletions

18
LICENSE Normal file
View File

@ -0,0 +1,18 @@
Copyright 2015-2019 Alex Yatskov
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,4 +1,4 @@
# Versioning File System # # Versioning File System
Versioning File System (uninterestingly abbreviated VFS) is a simple user-space file system implemented on top of Versioning File System (uninterestingly abbreviated VFS) is a simple user-space file system implemented on top of
[FUSE](https://en.wikipedia.org/?title=Filesystem_in_Userspace) with the aid of [Bazil](https://bazil.org/fuse/), [FUSE](https://en.wikipedia.org/?title=Filesystem_in_Userspace) with the aid of [Bazil](https://bazil.org/fuse/),
@ -6,7 +6,7 @@ written in Go. Development on this project was started as means to learn more ab
while at the same time answering a personal need of an easy to understand, transparent versioning file system for data while at the same time answering a personal need of an easy to understand, transparent versioning file system for data
backup. Although it should not yet be considered to be production ready, VFS is already usable in its current state. backup. Although it should not yet be considered to be production ready, VFS is already usable in its current state.
## Motivation ## ## Motivation
My goal was to build file system which could handle changes to file data and directory structure between mount cycles, My goal was to build file system which could handle changes to file data and directory structure between mount cycles,
in a simple, transparent way. I wanted to avoid storing version information in binary blobs, which are completely in a simple, transparent way. I wanted to avoid storing version information in binary blobs, which are completely
@ -25,18 +25,18 @@ language without sacrificing the readability and maintainability of a high level
Furthermore, the fact that Go programs are statically linked ensures that binaries will be compatible between various Furthermore, the fact that Go programs are statically linked ensures that binaries will be compatible between various
Linux distribution; recompilation is not required. Linux distribution; recompilation is not required.
## Installation ## ## Installation
If you already have the Go environment and toolchain set up, you can get the latest version by running: If you already have the Go environment and toolchain set up, you can get the latest version by running:
``` ```
$ go get github.com/FooSoft/vfs go get github.com/FooSoft/vfs
``` ```
Users of Debian-based distributions can use [godeb](https://github.com/niemeyer/godeb) to quickly install the Go Users of Debian-based distributions can use [godeb](https://github.com/niemeyer/godeb) to quickly install the Go
compiler on their machines. compiler on their machines.
## Usage ## ## Usage
Usage information can be seen by running VFS without command-line arguments: Usage information can be seen by running VFS without command line arguments:
``` ```
Usage: ./vfs [options] database [mountpoint] Usage: ./vfs [options] database [mountpoint]
@ -49,7 +49,7 @@ In the output above, the `database` parameter refers to a directory containing V
valid database. The `mountpoint` parameter refers to the path on your system where the file system will be accessible valid database. The `mountpoint` parameter refers to the path on your system where the file system will be accessible
(mounted). (mounted).
### Listing Volume Versions ### ### Listing Volume Versions
Specifying a database path without the mount point will output a timestamped listing of available versions. This listing Specifying a database path without the mount point will output a timestamped listing of available versions. This listing
includes identifiers which can be used to specify a specific version to mount with the `-version` parameter. Note that includes identifiers which can be used to specify a specific version to mount with the `-version` parameter. Note that
@ -62,7 +62,7 @@ version: 3 time: 2015-06-22 15:12:09 +0900 JST
version: 4 time: 2015-06-24 12:41:43 +0900 JST version: 4 time: 2015-06-24 12:41:43 +0900 JST
``` ```
### Mounting a Volume ### ### Mounting a Volume
1. Add yourself to the `fuse` user group if you are not added already (a requirement of FUSE). You can optionally skip 1. Add yourself to the `fuse` user group if you are not added already (a requirement of FUSE). You can optionally skip
this step by mounting the volume as the `root` user, but this is not recommended. this step by mounting the volume as the `root` user, but this is not recommended.
@ -72,7 +72,7 @@ version: 4 time: 2015-06-24 12:41:43 +0900 JST
also possible by setting the `-readonly` switch. also possible by setting the `-readonly` switch.
3. When you are finished using the volume, unmount it via the `fusermount -u mountpoint_dir` command. 3. When you are finished using the volume, unmount it via the `fusermount -u mountpoint_dir` command.
## Walkthrough ## ## Walkthrough
When you execute VFS for the first time, you will probably neither have a version database nor a mount point. Since an When you execute VFS for the first time, you will probably neither have a version database nor a mount point. Since an
empty directory is a valid empty version database and mount points should by always be empty, let's create two new empty directory is a valid empty version database and mount points should by always be empty, let's create two new
@ -220,7 +220,7 @@ Hopefully this brief walkthrough of the system helped illustrate the basic conce
it is a fundamentally simple system, the workings of which can be examined with any file browser and text editor. I it is a fundamentally simple system, the workings of which can be examined with any file browser and text editor. I
encourage those interested in this utility to follow this guide and to ask me any questions they may have. encourage those interested in this utility to follow this guide and to ask me any questions they may have.
## Limitations ## ## Limitations
There are a few lingering limitations of the system in its current state. While the architecture supports their There are a few lingering limitations of the system in its current state. While the architecture supports their
inclusion into a future version, I have not yet gotten around to taking care of this "laundry list" of items: inclusion into a future version, I have not yet gotten around to taking care of this "laundry list" of items:
@ -232,7 +232,3 @@ inclusion into a future version, I have not yet gotten around to taking care of
+ File attributes are modified + File attributes are modified
* Compress shadowed files * Compress shadowed files
* Support for Mac OS X * Support for Mac OS X
## License ##
MIT