Filesystem synchronization for Go
Go
Switch branches/tags
Nothing to show
Latest commit 08e1f15 Dec 20, 2011 @cmars cmars gofmt
Permalink
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
README.md Update readme. Nov 8, 2011

README.md

replican-sync - Filesystem synchronization for Go

Features

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.

Status

At this point, I'm working self-consistency and simplicity into the library as I develop on it. The API is subject to change.

Implemented

  • 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

goinstall github.com/cmars/replican-sync/replican/sync

See rp.go, fs_test.go and merge_test.go for examples.

Why?

I'm working on a decentralized folder synchronization service/application. replican-sync is just the first step.

License

MIT, see LICENSE. If you use replican-sync, I'd like to hear from you.

Developers

replican is developed in Go.

Building

You'll need to first goinstall:

  • github.com/bmizerany/assert
  • optarg.googlecode.com/hg/optarg

Run gb from the top level.

Testing

'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.