我使用--stats
选项运行了 rsync,因为同步是通过计量连接进行的。但是,过了一段时间,我想了解一下传输了多少数据,然后(可能,取决于结果)重新启动同步。但是当我按下Control+时C,它停止了同步,但没有给我任何统计数据,这完全打消了我使用 的打算--stats
。
我查看了手册页,但没有找到任何明显的方法可以统计中断情况下传输了多少数据,这一点没有提到。有没有办法统计传输的累计数据,而不依赖于传输是否完全完成,或者进行大量的手动计算和估算?
我正在运行的命令如下所示:
rsync --stats -Ppa $REMOTE:'/path/to/sync' /local/path/destination
答案1
不幸的是,我目前无法测试。但是:
由于您的问题发生在中断时rsync
,自然的补救措施是实时显示进度,即让 rsync 显示进度尽管它确实会发挥作用。我想到两种方法:
rsync
有--info=
选项。要了解您可以使用它做什么,请执行rsync --info=help
;这将列出您可以在右侧附加的标志。这些标志可以附加一个数字,以指定信息应该有多详细。例如,您可以在命令中添加--info=progress2
或--info=progress3
。请注意(因为我目前无法测试)我不知道是否可以通过这种方式监控整个数据传输大小(进度似乎更多地与单个文件相关),但恕我直言,机会很大。
--no-inc-recursive
您也应该考虑使用,因为这会使rsync
扫描优先。这样,它就知道在开始实际工作之前该做什么,这是获得进度监控正确数据的唯一方法。否则,rsync
会在工作时扫描,这可能导致进度信息始终显示“90%”...
另一种方法是使用pv
。基本上,您可以pv
在两个进程之间的管道中使用,并让它监控和输出传输的数据量和其他信息,具体取决于命令行选项。与pv
结合的基本用法rsync
如下所述这里。
pv
但是,该示例使用文件数来计算进度;您需要在命令行中给出文件数,这很丑陋。但同样,您可以通过在rsync
开始实际命令之前让 count 文件数来解决这个问题,然后将结果提供给pv
(而不是硬编码的数字)。我不确定,但我相信也应该可以pv
count 数据总量。
祝你好运!