<story><title>Rediscovering the Rsync Algorithm</title><url>http://blog.incubaid.com/2012/02/14/rediscovering-the-rsync-algorithm/</url></story><parent_chain></parent_chain><comment><author>mitchty</author><text>As cool as the rsync algorithm is, i&apos;d much rather we had the dsync utility outlined in this usenix 08 paper.
&lt;a href=&quot;http://www.usenix.org/event/usenix08/tech/full_papers/pucha/pucha.pdf&quot; rel=&quot;nofollow&quot;&gt;http://www.usenix.org/event/usenix08/tech/full_papers/pucha/...&lt;/a&gt;&lt;p&gt;An adaptive protocol that matches to the systems load dynamically whether its cpu/disk/network. Anyone know of what happened to this?</text></comment>
<story><title>Rediscovering the Rsync Algorithm</title><url>http://blog.incubaid.com/2012/02/14/rediscovering-the-rsync-algorithm/</url></story><parent_chain></parent_chain><comment><author>rlpb</author><text>There is a Better Way. Instead of using fixed sized blocks, use variable sized blocks. Decide the block boundaries using the data in the blocks themselves. This will reduce your search from O(n^2) to O(n).&lt;p&gt;Tarsnap does this. My project (ddar) does the same.</text></comment>