为什么 rsync 不对本地文件使用增量传输?

kol*_*pto 26 linux rsync

我有一个很大的 iso 映像,当前正在由打开空间保留的 torrent 客户端下载:这意味着文件大小不会改变,而 (4 Mib) 中的某些块由于下载而不断变化。

在 90% 下载时,我执行初始 rsync 以节省时间:

$ rsync -Ph DVD.iso /media/another-hdd/
发送增量文件列表

DVD.iso
       2.60G 100% 40.23MB/s 0:01:01 (xfer#1, to-check=0/1)

发送 2.60G 字节 接收 73 字节 34.59M 字节/秒
总大小为 2.60G 加速为 1.00

然后,当文件完全下载后,我再次 rsync:

total size is 2.60G   speedup is 1.00
Run Code Online (Sandbox Code Playgroud)

Speedup=1 表示未使用增量传输,尽管 90% 的文件没有更改,但目标目录在另一个 FS 上并且复制需要几分钟。为什么不尝试加快传输速度?!如何强制rsync使用增量传输?

小智 23

根据联机帮助页, psusi 是正确的:

-W, --whole-file:如果在源计算机和目标计算机之间的带宽高于磁盘带宽时使用此选项,传输速度可能会更快(特别是当“磁盘”实际上是网络文件系统时)。当源和目标都指定为本地路径时,这是默认值,但前提是没有批量写入选项有效。

  • 哦谢谢!我错了这条线 :) 要打开 delta-trasfer,请使用 `-no-W` (11认同)
  • @JessetheWindWanderer,长选项是`--no-whole-file`(请注意开头的双`--`)。 (7认同)

HRJ*_*HRJ 19

这个问题的直接答案是:

使用该--no-W标志来强制增量压缩,无论是本地还是远程。

更新:看起来这个故事还有更多内容。在delta compression似乎只启用之间接受和rsync的发射过程。将文件输出到文件系统时rsync,即使启用了增量压缩,仍可能会写出整个文件。

请参阅此处的“Wakan Tanka”调查。

更新 2:--inplace选项仅写入文件的更改部分。但是请注意--sparse,当使用目标文件时,它与手册冲突并且不推荐使用。

  • 在我的情况下,`--no-W` 总是传输整个文件。请检查 http://unix.stackexchange.com/questions/291156/why-rsync-does-not-do-delta-transfer (2认同)

小智 5

默认情况下,出于各种安全原因,rsync 首先创建目标文件的新副本,然后替换它。您可以通过指定--inplace和 来覆盖它--no-whole-file。这告诉 rsync 对目标文件进行就地编辑,接受手册页中记录的各种风险(对于这种情况通常较小)。