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 上测试
您可以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 手册页中的-P
or--progress
或--info=progress2
。但请注意:这些选项不能很好地与pv
. 或者至少我还没有找到如何做到的。
这是一个根据大小查看进度的粗略解决方法:
df -h
。du -sh
。watch df -h
并观察尺寸的增长。显然,这仅在复制时有效,在更新或比较时无效。