Updating README
This commit is contained in:
parent
9b3fcf0b8e
commit
ebde317492
24
README.md
24
README.md
@ -13,13 +13,19 @@ My goal was to build file system which could handle changes to file data and dir
|
|||||||
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
|
||||||
incomprehensible to the user. I strongly believed that the user should not be locked into a versioning scheme that
|
incomprehensible to the user. I strongly believed that the user should not be locked into a versioning scheme that
|
||||||
prevented trivial migration or export of data. As such, versioned file data is stored in timestamped directories on a
|
prevented trivial migration or export of data. As such, versioned file data is stored in timestamped directories on a
|
||||||
host file system (with minimal metadata stored in a human-readable format).
|
host file system (with minimal metadata stored in a human-readable format). This approach is fundamentally different
|
||||||
|
from that of other tools.
|
||||||
|
|
||||||
Each version consists of a root node and child nodes that represent modified files or directories for that version;
|
Each version consists of a root node and child nodes that represent modified files or directories for that version;
|
||||||
unmodified data is not duplicated between versions. Other information (such as records about file and directory
|
unmodified data is not duplicated between versions. Other information (such as records about file and directory
|
||||||
deletions) are stored in a JSON file next to the version root. Although VFS provides a mechanism for enumerating and
|
deletions) are stored in a JSON file next to the version root. Although VFS provides a mechanism for enumerating and
|
||||||
mounting specific snapshots, the user is capable of browsing the version data directly if they choose to do so.
|
mounting specific snapshots, the user is capable of browsing the version data directly if they choose to do so.
|
||||||
|
|
||||||
|
Golang was selected as the language of choice for this project as it combines the performance and safety of a compiled
|
||||||
|
language without sacrificing the readability and maintainability of a high level scripting language such as Python.
|
||||||
|
Furthermore, the fact that Golang programs are statically linked ensures that binaries will be compatible between
|
||||||
|
various 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:
|
||||||
@ -133,7 +139,7 @@ $ vfs db mp
|
|||||||
Now let's make a couple of changes to the files and directory structure:
|
Now let's make a couple of changes to the files and directory structure:
|
||||||
|
|
||||||
```
|
```
|
||||||
$ echo こんにちは > mp/greeting.txt
|
$ echo howdy > mp/greeting.txt
|
||||||
$ rm mp/pizza/pepperoni
|
$ rm mp/pizza/pepperoni
|
||||||
$ touch mp/pizza/bacon
|
$ touch mp/pizza/bacon
|
||||||
```
|
```
|
||||||
@ -142,7 +148,7 @@ $ touch mp/pizza/bacon
|
|||||||
|
|
||||||
```
|
```
|
||||||
$ cat mp/greeting.txt
|
$ cat mp/greeting.txt
|
||||||
こんにちは
|
howdy
|
||||||
$ ls -R mp
|
$ ls -R mp
|
||||||
mp:
|
mp:
|
||||||
greeting.txt pizza/
|
greeting.txt pizza/
|
||||||
@ -215,3 +221,15 @@ cheese pepperoni
|
|||||||
Hopefully this brief walkthrough of the system helped illustrate the basic concepts behind how VFS works. At its core,
|
Hopefully this brief walkthrough of the system helped illustrate the basic concepts behind how VFS works. At its core,
|
||||||
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 walkthrough and to ask me any questions they may have.
|
encourage those interested in this utility to follow this walkthrough and to ask me any questions they may have.
|
||||||
|
|
||||||
|
## Limitations ##
|
||||||
|
|
||||||
|
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:
|
||||||
|
|
||||||
|
* Add support for file linking
|
||||||
|
* Further reduce data duplication when:
|
||||||
|
+ File is renamed
|
||||||
|
+ File attributes are modified
|
||||||
|
* Compress shadowed files
|
||||||
|
* Support for Mac OS X
|
||||||
|
Loading…
Reference in New Issue
Block a user