我试图理解
the rsync algorithm如何处理以交错方式匹配的滚动校验和和块.
维基百科页面似乎表明发送方和接收方都计算并交换所有可能块的滚动校验和.但这意味着每个字节基本上发送一个校验和!我肯定错过了什么.如何对齐块?
例如如果S = 16字节块,并且发送方具有文本A的此文本:
The quick brown fox jumps over the
lazy dogs
并且接收者将此文本用于文件B:
The quick brown fox jumped over the
lazy dog
rsync交换如何工作?
解决方法
接收器仅针对非重叠块计算和发送滚动校验和.
相反,发件人会为每个可能的块计算它(但保持结果是本地的).然后对于发送方来说,只需检查非重叠块(由接收方发送)中的一个是否与任何(重叠)本地块匹配.
相反,发件人会为每个可能的块计算它(但保持结果是本地的).然后对于发送方来说,只需检查非重叠块(由接收方发送)中的一个是否与任何(重叠)本地块匹配.
您的示例太简单,看不到任何有趣的内容,最后两个块根本不匹配,将被发送以进行合并.
有一个更有趣的例子(大写是一个块):
发件人:
A B Cabc D
接收器:
A B C D
接收器将为A,B,C和D发送MD5和滚动哈希值.发送方将为每个(重叠)块计算滚动散列,它将匹配A,C和D.由于abc不匹配,它将发送它与合并它的信息.