我想了解如何 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不匹配,将与该信息,其中发送到合并。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top