为什么 rsync 在已经存在的大文件上花费很长时间?

为什么 rsync 在已经存在的大文件上花费很长时间?

我将计算机的一个内部驱动器备份到外部驱动器。下次我使用 rsync 同步两个驱动器时,我注意到未修改的大型(40 + GB)文件仍然需要很长时间才能“复制”。我认为 rsync 首先查看修改时间和文件大小?为什么要花这么长时间?就像使用校验和一样?

我最初使用复制文件rsync -rv --delete /src/path/ /dest/path/

答案1

由于您没有复制元数据(如果您使用--archive或 而-a不是仅复制元数据,则会执行此操作-r),因此副本和原始元数据(时间戳、所有权等)将有所不同。当再次运行时rsync,由于时间戳不同,因此文件会被再次复制。

所以,你会想使用

rsync -ai --delete /src/path/ /dest/path

我使用-i( --itemize-changes) 因为它也告诉我为什么复制了一个文件。

另请注意,当您执行当地的复制rsync,它会不是使用其 delta 算法,但其行为就像指定了--whole-file(或) 一样。-W这是因为在通过网络传输时,假定增量算法仅比整个文件传输更快。使用增量算法时,需要在源系统和目标系统上读取整个文件并进行校验和。在本地执行此操作似乎有点浪费,因此仅完整复制该文件。

相关内容