rsync限速必须用--bwlimit参数,单位为kb/s而非mb/s;例如2mb/s需设为2000,0表示不限速,过小值(如10)会导致极慢但可避争抢;应用层限速比网络设备qos更平滑精准。

直接加 --bwlimit 参数就行,单位是 KB/s,不是 MB/s,这点容易搞错。
带宽限制怎么写才有效
rsync 本身不支持 MB 单位,所有限速值都按“千字节每秒”(KB/s)计算。比如想限制在 2MB/s,得换算成 2000:
-
rsync -avz --bwlimit=2000 /src/ user@host:/dst/→ 限制为约 2MB/s -
rsync -avz --bwlimit=500 /src/ /backup/→ 本地同步也适用,限制为 500KB/s - 值设为 0 表示不限速;设太小(如 10)会导致传输极慢,但能彻底避开网络争抢
为什么限速不能靠网络设备或系统限流来代替
rsync 的 --bwlimit 是在应用层做平滑限速,每秒主动控制发送的数据量,不会突发打满链路。而路由器 QoS 或 tc 命令属于底层限流,可能造成 TCP 重传、延迟抖动,反而影响其他业务稳定性。尤其在共享出口、多任务共用带宽时,rsync 自身限速更精准、更可控。
配合常用参数一起用更稳妥
单独限速还不够,建议组合使用这些参数降低整体影响:
-
-z:开启压缩,减少实际传输字节数(对文本类文件效果明显) -
--partial:断点续传,避免失败后重传整个文件 -
--progress或-P:实时看速率是否真被压住了 -
--rsync-path="ionice -c3 rsync":在远程端降低 IO 优先级,避免磁盘拖慢网络
实测和验证小技巧
跑一次带 --dry-run 和 --progress 的命令,先观察预估流量和速度:
rsync -avn --bwlimit=300 --progress /bigdir/ user@host:/backup/- 看输出里 “speedup” 和 “bytes/sec” 是否稳定在设定值附近(允许 ±10% 波动)
- 真正执行时再去掉
n,并搭配nohup或screen防中断











