首页/网络/协议速查/命令行 FTP 客户端:curl 与 lftp

命令行 FTP 客户端:curl 与 lftp

服务器上没有图形工具时:curl 单发上传下载,lftp 做镜像同步与自动化,两者都支持 FTPS 与 SFTP。

协议速查网络更新于 2026-10-13

命令行 FTP 客户端

服务器上通常没有图形工具,命令行里 curl 与 lftp 是主力。curl 适合一次性的上传下载与快速列目录,参数直接、便于写进脚本;lftp 提供镜像同步、断点续传与批量命令,做定期同步比一堆 curl 调用更稳。两者都支持加密通道:curl 走显式 FTPS,lftp 还能直接走 SFTP。

基本信息

curl 优势参数简单,适合一次性操作与脚本化调用
lftp 优势镜像同步、续传、批量命令与配置持久化
主动被动两者默认走被动模式,可切换
加密支持curl 显式 FTPS,lftp 支持 FTPS 与 SFTP
认证方式用户名口令,也可用配置文件避免明文写在命令里

curl 走 FTP

curl 走 FTP
curl -u alice:口令 ftp://ftp.example.com/pub/file.tar.gz -O    # 下载
curl -u alice:口令 ftp://ftp.example.com/pub/                   # 列目录
curl -T local.bin -u alice:口令 ftp://ftp.example.com/upload/   # 上传
curl --ftp-ssl -u alice:口令 ftp://host/                        # 显式 FTPS

lftp 镜像同步

lftp 镜像同步
lftp -u alice,口令 ftp.example.com -e 'mirror --only-newer /remote ./local; bye'
lftp sftp://user@host -e 'put file.tar.gz; bye'                 # 直接走 SFTP
lftp -u alice,口令 -e 'set ftp:ssl-force true; ls; bye' ftp.example.com

任务与工具选择

任务推荐工具原因
单文件上传下载curl命令短,容易嵌进脚本
目录增量同步lftp 的镜像命令只传变化的部分
交互式排查lftp 交互模式可逐条执行并观察应答
批量脚本lftp 加命令文件一次连接完成多个动作
lftp 的镜像命令支持反向同步与续传相关选项,做定期同步比自写脚本更省流量也更稳。另外把口令写进命令行会留在进程列表与历史记录里,长期使用应改写到受权限保护的配置文件,并对文件本身做权限收敛。
列目录与传输是两条不同的连接:控制连接只负责发命令与收应答,真正搬运数据的是另一条连接。因此遇到「能登录、能列目录但文件传不动」这种情况,应该重点核对数据连接的端口与方向,而不是反复验证账号口令是否正确;先把故障归到控制侧还是数据侧,再谈调优。

易错点

  • curl 默认被动模式而部分老服务端只支持主动:先抓包确认失败点,再切换模式对照验证
  • 口令直接写在命令行里,留在进程列表与 shell 历史中,等于公开凭据
  • 把镜像同步写成整目录覆盖:误删目标端独有文件,应先确认删除策略
  • 用明文 FTP 传输敏感数据,误以为登录成功就代表通道加密
  • 脚本未处理连接重试与超时,网络抖动时直接判定同步失败

数据来源与参考

  • curl 手册(FTP 章节)
  • lftp 手册

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌