温馨提示×

怎样提升Linux FTP速度

小樊
39
2026-07-06 05:15:19
栏目: 智能运维

提升 Linux 下 FTP 传输速度,可以从网络、系统、FTP 服务配置、客户端参数等多个方面入手。下面按常见场景给你一套实用优化方案。


一、确认瓶颈在哪里

先判断是 网络、磁盘、CPU 还是 FTP 本身

# 查看实时网络
iftop

# 查看磁盘 IO
iostat -x 1

# 查看 CPU
top

二、FTP 服务端优化(vsftpd 为例)

1️⃣ 使用被动模式(非常重要)

被动模式(PASV)通常比主动模式快且稳定。

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

防火墙放行端口:

firewall-cmd --add-port=30000-31000/tcp --permanent
firewall-cmd --reload

2️⃣ 关闭 DNS 反向解析

DNS 解析会明显拖慢连接速度。

reverse_lookup_enable=NO

3️⃣ 调整并发与连接数

max_clients=200
max_per_ip=10

4️⃣ 关闭不必要的功能

ls_recurse_enable=NO
ascii_upload_enable=NO
ascii_download_enable=NO

5️⃣ 使用更快的传输模式

二进制模式(默认)

binary

❌ 避免 ASCII 模式(文本模式)


三、系统层面优化(Linux)

1️⃣ 调整 TCP 参数

编辑 /etc/sysctl.conf

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_sack = 1
net.ipv4.tcp_fack = 1

生效:

sysctl -p

2️⃣ 磁盘 I/O 优化

  • 使用 SSD
  • 文件系统推荐:ext4 / xfs
  • 避免 FTP 目录在 NFS 上

四、客户端优化

1️⃣ 使用多线程 / 分段下载

FTP 本身不支持多线程,但可用工具:

lftp(强烈推荐)

lftp ftp://user:pass@host
mirror -c --parallel=10 /remote /local

wget(单线程)

wget -c ftp://host/file

2️⃣ 调整客户端缓冲区

lftp 示例:

set net:socket-buffer 1048576

五、网络层面优化

1️⃣ 避免跨运营商传输

  • 服务器和客户端尽量同运营商
  • 使用 BGP 或专线

2️⃣ 启用大帧(Jumbo Frame)

(仅内网)

ip link set eth0 mtu 9000

六、考虑替代方案(重要)

✅ 如果 FTP 很慢,建议换协议

协议 速度 安全性
FTP
SFTP
HTTP/HTTPS
rsync 极高

示例:

rsync -avz --progress /local/ user@host:/remote/

七、快速对照检查表 ✅

  • [ ] 使用被动模式
  • [ ] 关闭 DNS 反向解析
  • [ ] 调整 TCP 缓冲区
  • [ ] 使用 lftp 多线程
  • [ ] 避免 ASCII 模式
  • [ ] 磁盘不是瓶颈
  • [ ] 网络不是跨运营商

如果你愿意,可以告诉我:

  • 使用的 FTP 软件(vsftpd/proftpd/pure-ftpd)
  • 内网还是公网
  • 单文件还是大量小文件

我可以给你一套针对你环境的精确优化方案

0