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

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

rsync据说使用delta-transfer算法来传输文件。

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

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

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

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

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

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

谢谢。

答案1

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

是的。

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

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

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

默认情况下,是的。您可以使用该选项禁用它--whole-file。请注意,增量传输算法发送的是不是diff实际上是两个文件中的一个。

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

否,因为rsync不假定发送者拥有目标版本文件的副本。

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

相关内容