温馨提示×

ubuntu sftp如何限速传输

小樊
34
2026-09-08 08:00:19
栏目: 智能运维

在 Ubuntu 上,SFTP 本身(OpenSSH 的 sftp 命令)并不支持直接限速参数,但可以通过底层机制来实现限速。下面按使用场景给你几种常见、实用的方法。


一、使用 sftp 命令 + pv 限速(推荐,最简单)

原理

pv(pipe viewer)控制数据流速,再交给 sftp 的标准输入。

安装 pv

sudo apt update
sudo apt install pv

上传限速示例(限速 1MB/s)

pv -L 1m file.txt | sftp user@host:/remote/path/

下载限速示例

sftp user@host <<EOF
get file.txt
EOF

如果一定要限速下载,推荐用 scp + pvrsync


二、使用 rsync 限速(最常用)

rsync 底层也可以用 SSH/SFTP 协议

限速 1MB/s(1000 KB/s)

rsync -avz --bwlimit=1000 file user@host:/path/

下载限速

rsync -avz --bwlimit=1000 user@host:/path/file ./

生产环境最推荐方式


三、使用 scp 限速

限速 1MB/s(单位 KB/s)

scp -l 1000 file user@host:/path/

说明:

  • -l 单位是 KB/s
  • 1000 = 1MB/s

四、服务器侧整体限速(OpenSSH + tc)

如果你是想限制服务器上所有 SFTP 用户速度

使用 tc(流量控制,复杂但有效)

sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

⚠️ 影响整个网络接口,不推荐新手使用。


五、使用 proftpd / vsftpd(非 SFTP)

如果你用的是 FTP 而非 SFTP

  • vsftpd:
local_max_rate=1000000

推荐总结

场景 推荐方式
单文件上传 pv + sftp
日常同步 rsync --bwlimit
简单命令 scp -l
服务器级 tc

如果你能告诉我:

  • 上传还是下载
  • 客户端限速还是服务器限速
  • 是否必须只用 sftp

我可以给你精确命令

0