Rsync Protocol Description?
Stephen Paul Weber
singpolyma at singpolyma.net
Sat Sep 15 10:51:54 MDT 2012
Greetings all,
I'm interesting in implementing a wire-compatible rsync library for use in
an application I am developing. The reason I want wire-compatability is so
that I can interface with normal `rsync --server` over whatever
communications tunnel on various platforms. The reason I want to write a
library instead of executing rsync as a sub-process is that (1) I want to
support platforms that rsync does not support, or supports poorly (2) I want
to be able to statically link said library to ease distribution on some such
systems (3) I think building this library will be fun and potentially useful
to others.
I have found librsync, which implements the algorithm but not the wire
protocol, and I intend to use. I understand that the rsync protocol is not
stable from version-to-version, but that version negotiation is performed on
each session to maintain backwards-compatability. Thus, I would implement a
recent version of the protocol first, and thus only work with recent
servers, and would likely not extend backwards but only forwards as new
versions of the protocol were implemented (though, as long as I do not need
new features newer servers should still be able to talk to me, yes?)
So, my question is: is there any sort of description of the protocol as it
exists today outside of the source code for rsync itself? Even notes that
rsync developers use for reference when doing development on the relevant
parts of the source would be useful to me in this endeavour.
Thank you for your time,
--
Stephen Paul Weber, @singpolyma
See <http://singpolyma.net> for how I prefer to be contacted
edition right joseph
More information about the rsync
mailing list