如何在复制文件时查看总进度

Omi*_*uin 8 rhel rsync command

我们知道,如果我们给 rsync 提供 --progress 参数,它将显示复制文件的进度。但问题是显示每个单个文件的进度而不是总进度或整体进度。

那么如何查看复制文件的总进度。

Bar*_*ino 19

要查看 的总进度rsync,现代版本(从 3.1.0 开始)有选项--info=progress2rsync必须与源文件(或使用 NFS)在同一台机器上运行才能显示合理的值。-a如果您复制系统目录,也不要忘记提供选项。


Tot*_*tor 4

正如评论所说,这个问题已经在这里提出了

所以...简短的回答:你不能。

编辑:您现在可以使用--info=progress2选项rsync来了解总体进度(如果您正在寻找替代进度指示器或了解更多信息,请阅读我原始答案的其余部分)。

我引用大卫·麦金托什的话:

添加总进度指示器的方法并不简单。

这样做的原因是,当 rsync 查看要同步的文件列表时,它不提前知道哪些文件需要更改。如果您正在进行增量传输,则必须提前计算增量本身,以全面了解需要完成的工作。

换句话说,计算需要完成多少工作的最简单方法就是实际执行。


但是,如果您已经知道自己有多少文件,则可以使用 来显示有关传输文件数量的进度条,引用Zerodeuxpv

rsync -aix /source remote:/dest | pv -les $(df -i /source | perl -ane 'print $F[2] if $F[5] =~ m:^/:') >/dev/null
Run Code Online (Sandbox Code Playgroud)

  • 推理存在缺陷。如果进度指示器的运行速度比其承诺的“快”,没有人会真正感到不安。Rsync 可以假设它将必须传输所有源文件,然后,如果它发现某些要传输的文件,则只需将其视为速度增加即可。它实际上在现代 rsync 版本中作为 `--info=progress2` 选项实现 (4认同)