题
我想了解如何 rsync的算法对于工程的滚动校验和块该匹配以交错的方式。
Wikipedia页面似乎表明,发送者和接收者两者计算和交换轧制校验对于所有可能的块。但是,这将意味着基本发送每个字节的校验一个!我肯定错过了什么。它是如何工作的,能够对齐块?
e.g。若S = 16个字节的数据块,和发送者具有本文用于文件A:
快速褐色狐狸跃过 懒惰狗
和接收器具有这个文本文件B:
敏捷的棕色狐狸跳过了 惰性狗
如何将一个rsync的交流工作?
解决方案
在接收机计算并且仅对于非重叠的块发送轧制校验和。 相反发送方计算它为每一个可能块(但保留结果本地)。然后,对于发送者,它只是一个检查的问题如果非重叠块中的一个(由接收器发送的)匹配的任何(重叠)局部块。
您的例子是太简单了,看到什么有趣的,最后两个街区根本不会匹配和合并将被发送。
使用一个更有趣的例子(大写是块):
发件人:
A B Cabc D
接收器:
A B C D
在接收机将发送MD5和滚动散列为A,B,C和D.
发送方将计算滚动散列为每个的(重叠的)块,它将匹配为A,对于B,C和D.为由于abc
不匹配,将与该信息,其中发送到合并。
不隶属于 StackOverflow