当我运行rsync
复制大文件时(在本地硬盘驱动器上的目录内)
+ rsync -P bigfile1.img bigfile2.img
bigfile1.img
6,512,705,536 100% 413.76MB/s 0:00:15 (xfr#1, to-chk=0/1)
它首先显示进度达到 100%,然后等待大约相同的时间,没有任何更改,然后才退出。
这可能是由于一些缓存造成的。
我可以显示真实的进度吗?
答案1
有两件事你可以尝试。
- 尝试 --debug=all 或 -v verbose。
- 在等待返回提示时尝试 #sstrace -ttT
根据显示的传输速率、文件大小和花费的时间 (0.15) 看起来不错。验证该时间包括等待时间。
答案2
简短的回答:尝试rsync --outbuf=L
获取实时进度。
man
它可能是输出缓冲,在 rsync 的页面中提到了--bwlimit
用于限制带宽的交换机:
--bwlimit=速率
(...)
由于数据的内部缓冲,--progress 选项可能无法准确反映数据发送的速度。这是因为当数据快速缓冲时,某些文件可能显示为快速发送,而当发生输出缓冲区刷新时,其他文件可能显示为非常慢。这可能会在未来版本中得到修复。
开关--outbuf
:
--outbuf=MODE 这设置输出缓冲模式。该模式可以是“无”(又名“无缓冲”)、“行”或“块”(又名“全”)。您可以为模式指定一个字母,并使用大写或小写。该选项的主要用途是将 Full buffering 更改为当 rsync 的输出进入文件时进行行缓冲 或管道。