我正在尝试编写一个Python脚本来监视rsync传输,并提供(粗略)估计百分比进度。对于我的第一次尝试,我查看了一个rsync --progress
命令,看到它打印的消息如下:
1614 100% 1.54MB/s 0:00:00 (xfer#5, to-check=4/10)
我为这些消息编写了一个解析器,并使用了to-check部分来产生一个百分比进度,在这里,这将完成60%。
然而,这有两个缺陷:
我已经看过要使用的其他替代消息,但还没有设法找到任何东西。有没有人有任何想法?
提前致谢!
答案 0 :(得分:28)
当前版本的rsync(在编辑3.1.2时)有一个选项--info=progress2
,它将显示整个传输的进度而不是单个文件。
来自the man page:
还有一个--info = progress2选项,它根据整个传输输出统计信息,而不是单个文件。使用此标志而不输出文件名(例如,如果你想看看转移是如何进行的,而不是用很多名字滚动屏幕,请避免-v或指定--info = name0。(你不需要指定--progress选项,以便使用--info = progress2。)
因此,如果可能,在您的系统上,您可以将rsync升级到包含该选项的当前版本。
答案 1 :(得分:8)
您可以使用参数--no-inc-recursive
禁用增量递归。 rsync将对整个目录结构进行预扫描,因此它知道它必须检查的文件总数。
这实际上是它递归的旧方式。增量递归(当前默认值)已添加为速度。
答案 2 :(得分:5)
请注意,即使--info=progress2
不完全可靠,因为这是基于rsync 知道的文件数量时的百分比。进展正在显现。这不一定是需要同步的文件总数(例如,如果它在深层嵌套目录中发现大量大文件)。
确保--info=progress2
在进度指示中跳回的一种方法是强制rsync在开始同步之前递归扫描所有目录(而不是默认行为)通过提供--no-inc-recursive
选项来进行递增递归扫描。但请注意,此选项还会增加rsync内存使用量和运行时间。
答案 3 :(得分:0)