rsync 中使用的增量传输算法是否传输源文件的一部分,即子文件?

Tim*_*Tim 1 rsync

据说 rsync 使用增量传输算法来传输文件。

对于与源文件具有相同文件名的预先存在的目标文件,

  1. 是否使用增量传输算法

    • 只有在 rsync 决定将源文件传输到目标之后,或者
    • 在确定 rsync 是否将源文件传输到目标时?
  2. 当 rsync 决定将源文件传输到目标文件时,

    增量传输算法是否传输源文件和目标文件之间的差异?

    delta-transfer 算法是否工作在“子文件”级别,通过先计算两个文件之间的补丁文件,然后将补丁文件传输到目的地,然后将补丁文件应用到预先存在的目的地文件来得到源文件的相同副本?

    如果是这样,rsync 是否需要将源文件传输到目标,以便计算源文件和目标文件之间的补丁文件?如果是,这是否与 delta-transfer 算法避免传输整个源文件的目的相矛盾?

谢谢。

Dep*_*iel 7

只有在 rsync 决定将源文件传输到目标之后

是的。

在确定 rsync 是否将源文件传输到目标期间

rsync不会。一旦启动 delta 算法,它就会完全致力于更新文件。

增量传输算法是否传输源文件和目标文件之间的差异?

默认情况下,是的。您可以使用该--whole-file选项禁用它。需要注意的是什么是增量传输算法发送是不是名副其实的diff两个文件。

delta-transfer 算法是否工作在“子文件”级别,通过先计算两个文件之间的补丁文件,然后将补丁文件传输到目的地,然后将补丁文件应用到预先存在的目的地文件来得到源文件的相同副本?

不,因为rsync不假设发件人拥有目标文件版本的副本。

rsync使用滚动校验和来确定文件的匹配部分,而无需在任一方向传输整个文件。当然,如果没有匹配项,则需要发送整个文件。