估计需要完成 rsync 的时间或工作?

Tim*_*Tim 5 rsync progress-information

rsync在一个包含大量文件和多级目录的目录上运行时,我们能估计完成的工作量或时间吗?

  • 进度选项只显示传输单个文件的进度,不显示传输源目录下所有文件和目录的进度。

  • 我猜的一种方法是查看它到目前为止传输的目录,并将其与源进行比较。

    如果我知道rsync传输它们的文件和目录的顺序,这将有很大帮助。

    我猜想,这可能与rsync运行多个线程,什么每个线程呢?

    我不确定它选择什么顺序,而且我之前对面包优先顺序的猜测似乎不正确(所以我把它划掉了)。

小智 9

rsync -arv /source desc --info=progress2
Run Code Online (Sandbox Code Playgroud)

给出 rsync 完成作业之前的预计时间

2,863,290,944 64%  5.71MB/s  0:04:12
Run Code Online (Sandbox Code Playgroud)

0:04:12 是剩余时间

在 CentOS 7/8 上测试

  • 它应该只是逝去的时间 (2认同)

les*_*ana 4

您可以rsync使用每个文件打印一行-i,然后使用pv -l根据行数(实际上是文件数)报告进度。

您将需要pv(管道查看器):http://www.ivarch.com/programs/pv.shtml

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile
Run Code Online (Sandbox Code Playgroud)

使用以下命令获取文件计数:

find sourcedir | wc -l
Run Code Online (Sandbox Code Playgroud)

注意:此命令将根据复制的文件数量显示进度信息。如果有许多小文件,此方法效果最佳。如果只有几个很大的文件,那么你不会有太多乐趣。


要在更新(或比较)现有副本时查看进度:

(更多信息:比较目录但不比较文件内容

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile
Run Code Online (Sandbox Code Playgroud)

第二个-i使 rsync 为每个文件打印一行,即使它们相等。

添加-n进行比较(实际上不是复制或删除任何内容)。

--delete根据需要省略。

此命令将实时将不同的文件打印到屏幕上:

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount | 
    tee logfile | grep -v "^\."
Run Code Online (Sandbox Code Playgroud)

当存在许多小文件时,上述命令效果最佳。如果您的大文件很少,那么一些 rsync 内置进度报告可能会有更多帮助。请参阅 rsync 手册页中的-Por--progress--info=progress2。但请注意:这些选项不能很好地与pv. 或者至少我还没有找到如何做到的。

这是一个根据大小查看进度的粗略解决方法:

  • 在使用 复制之前记下目标分区的可用空间df -h
  • 使用 记下源目录的大小du -sh
  • 使用watch df -h并观察尺寸的增长。

显然,这仅在复制时有效,在更新或比较时无效。