そういや rsync ってどうやってバイナリ差分取ってるんだっけと思って調べてみたら、そのものズバリ The rsync algorithm なんていうものがあった。確か rsync って内部的にはプロトコルがころころ変わってるとかいう話を聞いたことがあるけど、まあ差分アルゴリズムは変わってないだろう。
それで実際のアルゴリズムの内容だけど、ファイルを適当なバイト単位で区切ってから高速だが弱いチェックサムとそれより遅いが強いチェックサムの二つを求めて差分の探索をしてる。これは賢い。確かにこれならネットワーク越しに差分のやり取りが出来るな。しかしローリングチェックサムってのは初めて知ったな。
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。