我目前正在使用 rsync 将大文件从主机传输到另一个主机。我想限制此次转账的借方。阅读手册页后,我发现选项 --bwlimit 需要 KB/s 值。
我想将传输限制在 100Mbit/s 左右所以我使用了以下设置:
rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/
但根据 rsync 的输出,这似乎没有得到尊重:
file.sql.gz
570851702 100% 33.90MB/s 0:00:16 (xfer#5, to-check=34/39)
file.sql.gz
11195140 100% 7.45MB/s 0:00:01 (xfer#6, to-check=33/39)
file.sql.gz
51439169 100% 19.41MB/s 0:00:02 (xfer#7, to-check=32/39)
file.sql.gz
34022 100% 1.55MB/s 0:00:00 (xfer#8, to-check=31/39)
file.sql.gz
2305698 100% 6.96MB/s 0:00:00 (xfer#9, to-check=30/39)
file.sql.gz
2152942 100% 2.73MB/s 0:00:00 (xfer#10, to-check=29/39)
file.sql.gz
86655633 100% 19.33MB/s 0:00:04 (xfer#11, to-check=28/39)
file.sql.gz
3614476032 40% 34.82MB/s 0:02:28
如果我没记错的话:19.33MB/s ~= 154Mbit/s
那么这里出了什么问题呢?
PS:rsync版本3.0.6协议版本30
感谢您的帮助 !
答案1
我认为您经历了手册页中提到的一些“突发”:
--bwlimit=RATE
...
Some "burstiness" may be seen where rsync writes out a block
of data and then sleeps to bring the average rate into compliance.
所以正如我之前问的,你工作结束时的总体比率最终被限制在 10M。
答案2
正如中提到的rsync 手册页,它以 KByte/sec 为单位传输:
--bwlimit=KBPS limit I/O bandwidth; KBytes per second
答案3
我想将传输限制在 100Mbit/s 左右所以我使用了以下设置:
rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/
100 Mbit/s(大约)是 10 MByte/s,实际上是 10,000 KByte/s。如果您遇到rsync
突发情况,那么单独的工具可能trickle
会有所帮助:
trickle -s -d 10000 -u 10000 -t 10 -l 100 rsync --progress -v --temp-dir=/tmp srv:/tmp/* /tmp/
答案4
显示的值是有效传输速率,其中包括压缩和增量算法带来的速度,如果rsync
在启用部分传输的情况下重新启动中断的会话(例如--append-verify
),则可以通过查看大量数字来轻松观察到这一点。