使 rsync 显示校验和比较的进度,即使没有发现差异

Rot*_*eti 8 rsync

我运行此命令来检查两个文件夹的相同性并将所有差异放入日志文件中:

rsync -av --delete --checksum --dry-run --stats --itemize-changes --out-format='%t %i %f ' SOURCE DESTINATION | tee log.txt
Run Code Online (Sandbox Code Playgroud)

如果您要比较的文件之间没有差异,则 rsync 直到作业结束才会提及除此之外的任何内容:

发送增量文件列表

获得有关 rsync 所在位置的一些信息会很好。尤其是当您比较大量文件时。是否可以让 rsync 将所有检查打印到终端中,而只在日志文件中留下差异?

PS:--info=progress2没有帮助。

Dia*_*gon 1

[我发现您需要 rsync 正在计算校验和的文件列表,因为正在计算这些校验和。从我的阅读看来,这似乎不可用。我在下面提供了一些关于 rsync 报告如何工作以及如何报告我所理解的进度的更一般信息。]

如果有文件要传输,那么--info=progress1开关(“每个文件进度”)将为您提供一些进度信息。当每个文件被传输时,它会给你一些看起来像这样的东西:

MD5SUMS.gnome
        141   0%    0.00kB/s    0:00:00 (xfr#1, to-chk=11/13)
ParrotSecurity.lnk
        179   0%   37.11kB/s    0:00:00 (xfr#2, to-chk=10/13)
SHA256SUMS.mate
        486   0%  336.91kB/s    0:00:00 (xfr#3, to-chk=9/13) 
SHA256SUMS.mate.gpg
      1,419   0%    1.22MB/s    0:00:00 (xfr#4, to-chk=8/13)
SHA256SUMS.ubuntu
      1,994   0%    1.77MB/s    0:00:00 (xfr#5, to-chk=7/13)
SHA256SUMS.ubuntu.gpg
      2,927   0%    2.66MB/s    0:00:00 (xfr#6, to-chk=6/13)
Run Code Online (Sandbox Code Playgroud)

xfer告诉您正在传输哪个文件(xfer#6是第 6 个),并且to-chk(比如说to-chk=6/13)告诉您这是 13 个文件中的第 6 个。

请注意,您不会在 a 中获得此信息--dry-run,因为没有任何内容可传输。(您也可以使用 获得此输出--progress,尽管从手册页中尚不清楚,我现在不会检查。)

如果你查看--recursive手册页,你会发现从 3.0.0 版本开始,rsync -r会在开始之前检查一些目录,然后在传输时继续检查它们。这是“增量递归”扫描,在这种情况下,您将看到ir-chk而不是to-chk. 并且,随着它逐步扫描更多文件,“分母”ir-chk会增加。

如果您没有使用--recursive,则首先进行校验和以识别必须传输的所有文件,然后将它们逐一传输。您似乎无法获得有关计算校验和的初始阶段的任何类型的进度报告,因为 rsync 尚不知道将有多少文件或它们有多大。至于是否可以在计算校验和时获得文件名列表,从我的阅读来看,似乎并非如此。(但是可能有一个巧妙的技巧,而且很难证明是否定的!)