Bootstrap

rsync算法原理

1. 简介

rsync是一种文件同步的工具,也是一种算法。

2. 算法原理

背景:计算机 α \alpha α 上有文件 a, 计算机 β \beta β上有文件b。要对这两个文件进行同步。

  1. β \beta β将文件b分成大小为S字节的若干块,最后一份可能不足S字节
  2. 对于b中的每一块, β \beta β计算两个哈希值;一个32位的弱滚动哈希,一个128位的MD5强哈希。
  3. β \beta β将这些哈希值发给 α \alpha α
  4. α \alpha α计算每S弱哈希值,并在 β \beta β传来的表中进寻找这个弱哈希值。若找到了再计算强哈希值进行比较,强哈希值相同,右移S字节;否则右移一个字节计算新的弱哈希值。弱哈希值比较失败也是右移一个字节,计算新的弱哈希值。
  5. 这样我们就得到了一个列表, α \alpha α中有 β \beta β中也有的, β \beta β中有 α \alpha α中没有的。这样一来,两个文件就能进行同步了。

查找算法图见知乎
在这里插入图片描述

3. 参考

zhihu
rsyn-algorithm
rsync
geek-for-geeks-rsync

;