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

Dee*_*ool 3 rsync

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

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

Kus*_*nda 8

由于您不是在复制元数据(如果您使用--archive-a而不仅仅是,您会这样做-r),元数据(时间戳、所有权等)在副本和原件之间会有所不同。rsync再次运行时,由于时间戳不同,再次复制文件。

所以,你会想要使用

rsync -ai --delete /src/path/ /dest/path
Run Code Online (Sandbox Code Playgroud)

我正在使用-i( --itemize-changes),因为它还告诉我为什么复制文件。

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