[[http://librsync.sourceforge.net/|Librsync]] is a library that implements a remote-delta algorithm, which efficiently creates diffs of files separated by a network connection. This allows for greatly reduced network IO to send an updated version of a file that is mostly the same as the previous version. ===== Case Studies ===== * FolderShare used librsync 0.9.7 to transfer files up to 2GB. The code ran on Linux, PC, and OSX without any problems. ===== Gotchas ===== * The larger the file, the larger the amount of memory necessary. It may require a significant amount of memory for gigabyte+ files. This can be mitigated by adjusting the window size. * Be sure to test your product with files greater than 2 and 4 GB. ===== Alternatives ===== * If you have a copy of the content that exists on the remote side [[http://xdelta.org/|xdelta]] can be a more efficient (and less arcane) choice. * Another remote syncing algorithm, RDC, is described in [[http://research.microsoft.com/~gurevich/Opera/183.pdf|this Microsoft Research paper]]. ===== Other Resources ==== * [[http://rsync.samba.org/tech_report/|Description of the rsync algorithm]]