Filesystem synchronization for Go
Switch branches/tags
Nothing to show
Latest commit 08e1f15 Dec 20, 2011 @cmars cmars gofmt
Failed to load latest commit information.
replican gofmt Dec 20, 2011
rp gofmt Dec 20, 2011
testroot Initial checkin of the lua version. Sep 13, 2011
trainwreck More patch tests against dbrepo. Fix cmdline apps. Dec 15, 2011
LICENSE Update README. Oct 26, 2011
NOTES Added notes. Oct 26, 2011 Update readme. Nov 8, 2011

replican-sync - Filesystem synchronization for Go


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.

Planned/In Development

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.

Getting Started


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:


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.