scp限速用-l参数,单位为kbit/s而非kb/s,-l 1000≈125kb/s;限速500kb/s需-l 4000,1mb/s需-l 8192;上传与下载方向限速独立,且为粗粒度控制。

用 scp 限制传输速率很简单,核心是 -l 参数,单位是 Kbit/s(千比特每秒),不是 KB/s。很多人误以为 -l 1000 就是 1MB/s,其实它 ≈ 125KB/s,这点必须先搞清。
scp 限速参数 -l 的正确用法
-l 后面跟的数值是带宽上限,单位为 Kbit/s(注意是“比特”,不是“字节”)。换算关系是:
- 1 KB/s = 8 Kbit/s
- 想限速到 500 KB/s → -l 4000(因为 500 × 8 = 4000)
- 想限速到 1 MB/s(即 1024 KB/s)→ -l 8192(1024 × 8)
- 常见轻量限速:-l 2000 ≈ 250 KB/s,-l 8000 ≈ 1 MB/s
实际命令示例
假设要把本地 backup.tar.gz 传到远程服务器 192.168.1.100 的 /data/ 目录,SSH 端口是 2222,限速 2 MB/s(即 2048 KB/s):
scp -P 2222 -l 16384 backup.tar.gz user@192.168.1.100:/data/
说明:
- -P 2222 指定非默认 SSH 端口(注意大写 P)
- -l 16384 = 2048 KB/s × 8 = 2 MB/s 带宽上限
- 传输过程中可用 iftop 或 nethogs 观察实时流量是否被压在设定值附近
和 rsync 限速的区别
scp 不支持断点续传,适合一次性小到中型文件;如果传大文件、网络不稳定,建议用 rsync:
- rsync 的限速单位是 KB/s,参数是 --bwlimit=数值
- 例如
--bwlimit=1000就是严格限制在 1000 KB/s - 加上
-P可显示进度并支持断点续传,更稳妥
注意事项
scp 限速是单向生效的:从本地发往远程时,-l 限制的是**上传速率**;从远程拉取时,-l 限制的是**下载速率**。它不会自动区分方向,只按当前传输动作起作用。
另外,-l 是粗粒度限速,不能精确到 ±10KB,实际波动约 ±10% 属正常;若需更精细控制或需要日志、重试、校验等能力,应转向 rsync 或 sftp。











