Rsync --bwlimit 不起作用

Hug*_*ugo 18 linux rsync

我目前正在使用 rsync 将大文件从主机传输到另一个主机。我想限制这笔转账的借方。阅读手册页后,我发现选项 --bwlimit 期望 KB/s 值。

我想将传输限制在 100Mbit/s 左右,所以我使用了以下设置:

rsync --progress -v --bwlimit=10000 --temp-dir=/tmp srv:/tmp/* /tmp/
Run Code Online (Sandbox Code Playgroud)

但是根据 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
Run Code Online (Sandbox Code Playgroud)

如果我没记错:19.33MB/s ~= 154Mbit/s

那么这里有什么问题呢?

PS:rsync 版本 3.0.6 协议版本 30

谢谢你的帮助 !

小智 15

我认为您经历了联机帮助页中提到的一些“突发”:

--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.
Run Code Online (Sandbox Code Playgroud)

所以正如我之前问过的那样,你工作结束时的总比率最终被限制在 10M。


shg*_*Inc 7

rsync 手册页所述,它以千字节/秒传输:

--bwlimit=KBPS          limit I/O bandwidth; KBytes per second
Run Code Online (Sandbox Code Playgroud)

  • 这就是我使用的:10 000 KB = 78.12500 兆位 (3认同)
  • 你没注意我说的话。rsync 使用 _Byte_ 而不是 _bit_,因此您必须以 **bit** 为单位计算带宽并将其转换为 **byte** (3认同)