replican-sync provides local file & directory synchronization with an implementation of the rsync algorithm. It is not compatible with the wire protocols and indexing used in the rsync(1) utility.
At this point, I'm working self-consistency and simplicity into the library as I develop on it. The API is subject to change.
- Linux, OSX, MinGW
- Hierarchical, content-addressable filesystem model down to the block level.
- Match and patch files with rolling checksum and strong cryptographic hash.
- Match and patch directory structures.
In order of current precedence.
- (NEW) Simple version tracking and automated merge between stores.
- Emphasis on the 'simple'! This isn't going to be a DVCS! :)
- Synchronization behavior options (filtering, handling deletes, etc.)
- Handle symbolic links.
- Performance benchmarking, tuning, optimization.
goinstall github.com/cmars/replican-sync/replican/sync
See rp.go, fs_test.go and merge_test.go for examples.
I'm working on a decentralized folder synchronization service/application. replican-sync is just the first step.
MIT, see LICENSE. If you use replican-sync, I'd like to hear from you.
replican is developed in Go.
You'll need to first goinstall:
- github.com/bmizerany/assert
- optarg.googlecode.com/hg/optarg
Run gb from the top level.
'gb -t' to execute unit tests.
Indexing, matching & patching are tested with a little utility that fabricates directory structures of arbitrary random, but reproducible binary data. See replican/treegen.