Skip to content

cmars/replican-sync

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

92 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

Filesystem synchronization for Go

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages