This is an rsync clone written in the Rust programming language. It is intended to provide the functionality of rsync, rdiff, and zsync in one single program, as well as some additions such as caching file signatures to make repeated synchronizations faster. It will also provide a library, allowing to use the functionality in your own programs.
I am still implementing core functionality. This is NOT ready for production use.
Common options: -X
indicates the location of the index file on the source side, and -x
the index file on the destination side.
$ rrsync sync some/folder othermachine:folder
Pre-computed indices are optional but make the operation faster:
$ rrsync index -x folder.idx some/folder
$ ssh othermachine \
rrsync index -x folder.idx folder
$ rrsync sync -X folder.idx -x othermachine:folder.idx some/folder othermachine:folder
```
$ rrsync index -x signature.idx old/folder $ rrsync diff -o patch.bin -x signature.idx new/folder $ rrsync patch old/folder patch.bin ```
``` $ rrsync index -x data.tar.rrsync.idx data.tar $ rrsync sync -X data.tar.rrsync.idx old/data.tar
$ rrsync sync -X http://example.org/data.tar.rrsync.idx old/data.tar ```
The rsync algorithm: https://rsync.samba.org/tech_report/ How rsync works: https://rsync.samba.org/how-rsync-works.html
zsync: http://zsync.moria.org.uk/
Compression crate: https://crates.io/crates/flate2