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.
- 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.
- Handle symbolic links.
- Synchronization behavior options (filtering, handling deletes, etc.)
- 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.