rsync protocol description

Donovan Baarda abo at minkirri.apana.org.au
Tue Dec 17 22:42:01 EST 2002


On Wed, 2002-12-18 at 02:11, Christoph Bartelmus wrote:
> Hello,
> 
> I'm currently evaluating the possibility of implementing a rsync client
> in a project for my company. The platform used is currently not
> supported and implementing the client from scratch currently seems to be
> the most feasible approach.

You do _not_ want to do this, unless you are prepared to make your
client implementation incompatible with the real rsync.

If you need real rsync compatibility, then your best bet is to port
rsync to the platform and submit your patches upstream. This is your
best chance of achieving and maintaining rsync compatibility.

I you are prepared to forgo rsync compatibility, you should look at
librsync. There are also various prototype implementations like
superlifter, pysync, etc.

> For that I'd be very much interested in a description of the protocol
> that rsync talks on port 873. Is such a description available somewhere?
> I don't want to have to deduce the protocol from the source code.

The protocol changes as rsync is updated, and is very.... evolved....
re-implementing and tracking it is not really viable/desirable.

> What I have found so far are the description of the algorithms (rsync
> technical report and Andrew Tridgell's PhD thesis). Have I overlooked
> something obvious?

http://freshmeat.net/projects/pysync/

is a Python implementation of the algorithm and various variations like
xdelta in ~400 lines (mostly documentation)... can be useful for
understanding the algorithm or prototyping stuff.

ABO




More information about the rsync mailing list