在 Ubuntu 上,SFTP 本身(OpenSSH 的 sftp 命令)并不支持直接限速参数,但可以通过底层机制来实现限速。下面按使用场景给你几种常见、实用的方法。
sftp 命令 + pv 限速(推荐,最简单)用 pv(pipe viewer)控制数据流速,再交给 sftp 的标准输入。
sudo apt update
sudo apt install pv
pv -L 1m file.txt | sftp user@host:/remote/path/
sftp user@host <<EOF
get file.txt
EOF
如果一定要限速下载,推荐用 scp + pv 或 rsync。
rsync 限速(最常用)rsync 底层也可以用 SSH/SFTP 协议
rsync -avz --bwlimit=1000 file user@host:/path/
rsync -avz --bwlimit=1000 user@host:/path/file ./
✅ 生产环境最推荐方式
scp 限速scp -l 1000 file user@host:/path/
说明:
-l 单位是 KB/s如果你是想限制服务器上所有 SFTP 用户速度:
tc(流量控制,复杂但有效)sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
⚠️ 影响整个网络接口,不推荐新手使用。
proftpd / vsftpd(非 SFTP)如果你用的是 FTP 而非 SFTP:
local_max_rate=1000000
| 场景 | 推荐方式 |
|---|---|
| 单文件上传 | pv + sftp |
| 日常同步 | rsync --bwlimit |
| 简单命令 | scp -l |
| 服务器级 | tc |
如果你能告诉我:
sftp我可以给你精确命令。