linux上传文件到ftp服务器
- 云服务器
- 2025-09-09
- 5
准备工作
确认FTP服务器信息
需提前获取以下关键参数:
| 参数 | 说明 | 示例值 |
|————–|——————————-|——————|
| 主机名/IP | 目标服务器的域名或公网地址 | ftp.example.com |
| 端口号 | 默认21(非标准端口需特别指定) | 21 |
| 用户名 | 用于登录认证的账号 | user123 |
| 密码 | 对应账户的安全凭证 | securePass@456 |
| 工作目录 | 文件存放路径(可选) | /uploads/ |
️ 注意:若使用被动模式(PASV),还需确保本地防火墙开放高端口范围(如50000+)。
安装命令行工具
根据系统类型选择客户端:
# Debian/Ubuntu系 sudo apt install ftp # 基础FTP客户端 sudo apt install lftp # 增强版支持断点续传等功能 # RHEL/CentOS系 sudo yum install ftp sudo yum install lftp
交互式上传操作流程(以ftp为例)
步骤1:启动会话
ftp [主机名或IP] # 例:ftp ftp.example.com
首次连接会提示输入用户名和密码:

成功登录后进入ftp>提示符环境。
步骤2:配置传输模式
推荐使用二进制模式避免文本损坏:
binary # 切换为二进制传输模式(适用于所有文件类型) # stream模式下仅适合纯文本文件,慎用!
步骤3:导航目标路径
通过以下命令定位保存位置:
| 操作 | 功能 | 示例 |
|———————|————————–|————————–|
| cd /uploads/ | 进入子目录 | |
| pwd | 查看当前所在路径 | 返回类似/home/ftpuser的结果 |
| !ls -l | 临时执行本地Shell命令检查权限 | |

步骤4:执行上传命令
常用方法对比:
| 方法 | 语法 | 特点 |
|—————|——————————–|————————–|
| put本地文件 | put localfile.txt remotename.txt | 重命名存储 |
| put批量通配符 | put .log | 一次性上传多个匹配文件 |
| hash校验 | hash | 显示实时传输进度条 |
示例完整交互过程:
ftp> binary 200 Type set to I (binary). ftp> cd /uploads/backup 250 CWD command successful. ftp> put important_data.csv local: important_data.csv remote: important_data.csv 226 File receive OK. ftp> bye # 退出会话
自动化脚本实现(适用于批量任务)
方案A:使用ncftp非交互式工具
创建配置文件/root/myupload.conf:

host=ftp.example.com user=user123 pass=securePass@456 binary=yes passive=yes cd=/uploads/autoload/ put=.zip # 上传所有ZIP压缩包 recursive=yes # 包含子目录递归搜索
执行命令:
ncftpput -f /root/myupload.conf
方案B:Shell脚本结合lftp
编写可执行脚本/opt/scripts/autoftp.sh:
#!/bin/bash lftp -c "open ftp://user123:securePass@456@ftp.example.com; set ftp:passive-mode true; cd /uploads/images; put -O screenshot_.png; quit"
赋予权限并测试运行:
chmod +x /opt/scripts/autoftp.sh /opt/scripts/autoftp.sh
常见问题排查指南
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| “550 Permission denied” | 目标目录写权限不足 | chmod o+w /uploads/ 或联系管理员授权 |
| 超时无响应 | 防火墙阻断主动端口 | 改用被动模式(passive on) |
| 连接被拒绝 | IP黑名单限制 | 更换允许访问的IP段 |
相关问题与解答
Q1: 如何验证文件是否完整上传?
A: 可通过两种方式确认:
- 大小比对:在本地和服务器分别执行ls -l filename查看字节数是否一致;
- MD5校验:使用md5sum localfile生成摘要,再在FTP侧运行相同命令进行匹配。
Q2: 遇到“425 Can’t open data connection”怎么办?
A: 这是典型的防火墙干扰问题,解决方法:
① 客户端启用被动模式:passive on;
② 确保服务器防火墙放行EPRT指令使用的临时端口范围(通常TCP 60000+);
③ 若仍失败,尝试修改客户端配置降低超时阈值:set net:max-retries 2