如何让 rsync 在中断时打印统计信息

如何让 rsync 在中断时打印统计信息

我使用--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(而不是硬编码的数字)。我不确定,但我相信也应该可以pvcount 数据总量。

祝你好运!

相关内容