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

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

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

rsync -av --delete --checksum --dry-run --stats --itemize-changes --out-format='%t %i %f ' SOURCE DESTINATION | tee log.txt

如果您所比较的文件之间没有差异,则 rsync 在作业结束之前将不会提及除此之外的任何内容:

发送增量文件列表

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

PS:--info=progress2没帮助。

答案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)

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

--dry-run请注意,由于没有要传输的内容,因此您不会在 a 中获得此信息。(您也可以使用 获得此输出--progress,尽管手册页中没有明确说明,我现在不会检查。)

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

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

相关内容