Tech and Media Labs
This site uses cookies to improve the user experience.




RSync - Remote Synchronization Protocol

Jakob Jenkov
Last update: 2014-05-23

RSync is a remote file (or data) synchronization protocol. It allows you to synchronize files between two computers. By synchronize, I mean make sure that both copies of the file is the same. If there are any differences, RSync detects these differences, and sends across the differences, so the client or server can update their copy of the file, to make the copies the same.

RSync is capable of synchronizing files without sending the whole file across the network. In the implementation I've done, only data corresponding to about 2% of the total file size is exchanged, in addition to any new data in the file, of course. New data has to be sent across the wire, byte for byte.

Because of the way RSync works, it can also be used as an incremental download / upload protocol, allowing you to upload or download a file over many sessions. If the current upload or download fails, you can just resume it later.

RSync is also an executable (program) on unix systems, which implements the RSync protocol. This tutorial will focus on the protocol itself, though. The Java implementation I describe in the end of this tutorial is not compatible with the unix RSync implementation. However, this implementation gives you both client and server side tools, so you don't need the unix RSync implementation to use it.

Here is the original description of RSync.

Here is the Wikpedia page on RSync.

Table of Contents

Here is a list of the topics covered in this trail. This list (menu) is also present at the top right of every page in the trail.

Feel Free to Contact Me

If you disagree with anything I write here, or just have comments, questions, etc, feel free to send me an email. You wouldn't be the first to do so. You can find my email address on the about page.

Jakob Jenkov




Copyright  Jenkov Aps
Close TOC