Compare commits
No commits in common. "52aa4411952e3553982b114ef709d4aba2d569a1" and "1e126d7d89716b2fb956a24c60b549aea874c002" have entirely different histories.
52aa441195
...
1e126d7d89
18
LICENSE
18
LICENSE
@ -1,18 +0,0 @@
|
|||||||
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.
|
|
24
README.md
24
README.md
@ -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,3 +232,7 @@ 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
|
||||||
|
Loading…
Reference in New Issue
Block a user