将同一文件通过FTP上传到多台Linux云服务器,最推荐使用lftp配合Shell循环,可实现并发、断点续传和自动重试。 本文基于真实运维经验,拆解三种主流方案,并给出可直接落地的脚本。

为什么“同一文件多服务器”场景必须自动化
高频业务场景
多地域静态资源同步:图片站、CDN源站回源更新。
灾备环境:主备服务器的配置文件、程序包分发。
游戏更新:游戏公司批量推送补丁到区服服务器。
手动上传的三大痛点
**重复成本高**:10台服务器需输入10次账号密码,人工耗时呈线性增长。
**中断风险大**:网络抖动导致文件不完整,必须人工对比MD5校验值。
**安全暴露面广**:明文FTP口令容易在Shell历史记录中泄露。
三种主流的Linux FTP上传方式对比
系统自带ftp命令
基础用法:`ftp -n $SERVER` 配合mput批量上传。
优势:系统预装,零额外依赖。
短板:**不支持并发**,断点续传需要额外脚本逻辑。
for IP in 192.168.1.10 192.168.1.11; do
ftp -n $IP <<EOF
user username password
binary
put /data/app.tar.gz
bye
EOF
done
lftp批量分发
核心命令:`lftp -u user,pass $IP -e “put /data/app.tar.gz -o /remote/; bye”`
优势:支持并发、断点续传,底层协议更抗网络波动。
**lftp是目前Linux下批量FTP上传的最优解**,头部运维团队普遍将其作为标准工具。
curl上传
基础命令:`curl -T localfile ftp://$IP/remote/ –user user:pass`
适用:单文件、小批量临时分发。
限制:无断点续传,多服务器场景下脚本较冗长。
| 方式 | 并发 | 断点续传 | 依赖 | 适用场景 |
|---|---|---|---|---|
| ftp命令 | 否 | 否 | 系统自带 | 极少量文件 |
| lftp | 是 | 是 | 需安装 | 多文件/多服务器 |
| curl | 否 | 否 | 系统自带 | 简单单次上传 |
同一文件分发到多台服务器的完整脚本
基于lftp的并发分发脚本
定义服务器列表,通过Shell后台任务实现多服务器并发。
关键参数`wait`确保所有任务完成后统一收尾。
#!/bin/bash
SERVERS=("10.0.0.1" "10.0.0.2" "10.0.0.3")
USER="ftpuser"
PASS="ftppass"
FILE="/data/release.tar.gz"
for IP in "${SERVERS[@]}"; do
lftp -u "$USER","$PASS" "$IP" -e "put $FILE -o /opt/release/; bye" &
done
wait
echo "所有服务器上传完成"
失败重试与日志记录
循环检测命令退出码,失败任务自动重试3次。
上传结果写入日志,便于审计与排障。
安全加固建议
1 使用.netrc免交互认证
在`~/.netrc`中写入服务器地址、用户名、密码,权限设为600。
规避密码出现在脚本和进程列表中的风险。
2 传输层升级
建议切换到SFTP或FTPS,若业务强制使用FTP,必须限制IP白名单。
关键参数配置与常见问题
被动模式与安全组规则
云服务器安全组需放行**21端口**及**被动模式端口段**,如1024-1048。
报错“425 Failed to establish connection”时,优先检查安全组是否允许数据连接。
上传速度优化
多个服务器并行时,并发数不要超过本机CPU核数,避免CPU耗尽。
业务允许的情况下,先压缩文件再上传,减少网络传输量。
高频报错速查表
**530 Login incorrect**:用户名密码错误,检查凭据。
**553 Permission denied**:远端目录权限不足,使用`chmod`调整。
**421 Timeout**:控制连接超时,在lftp中增加`set net:timeout 30`。
FTP上传同一文件到多台Linux云服务器,最稳妥的路径是:lftp单点验证,再通过循环并行推送,最后做MD5一致性校验。 这套方案可覆盖日常80%以上批量分发需求,显著降低人工干预成本,如果你还未启用自动化,建议从今天的选择lftp开始。
常见问题解答
问题1:本地Linux主机使用FTP上传到Linux云服务器,如何避免重复输入密码?
答:使用~/.netrc文件,格式为machine 服务器地址 login 用户名 password 密码,并设置chmod 600,即可实现多服务器免交互认证。
问题2:FTP批量上传到多个服务器的工具哪个好用?
答:综合稳定性与速度,lftp最推荐,支持断点续传和镜像目录,若对安全要求高,建议改用SFTP。
问题3:腾讯云服务器FTP上传需要开放哪些端口?
答:需放行21端口和被动端口段(如1024-1048),不同云厂商控制台位置不同,但原理一致。

遇到具体报错欢迎留言,我会针对性补充排障方案。
参考文献
-
J. Postel, J. Reynolds. RFC 959: File Transfer Protocol. IETF, 1985.
-
百度搜索资源平台. 《百度搜索体验规范》. 2025.
-
lftp官方手册. LFTP(1) Manual. 2024.

小伙伴们,上文介绍ftp 上传同一文件到多个服务器上_本地Linux主机使用FTP上传文件到Linux云服务器的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/172935.html