通过 ncftp 和 lftp 实现命令行 FTP 服务器上传下载

之前上传文件到 FTP 服务器,一般通过客户端软件,这个操作比较繁琐,而且每个操作系统的客户端软件操作也不太一致,需要找到一个配置一次后可直接执行的方法。

选型

  • 在上传方面, ncftp 和 lftp 都可以做到一条指令就完成操作, 写到 shell 脚本后即可非常方便地执行上传操作,并且和项目打包构建等结合。
  • 在下载方面, ncftp 命令本身不支持递归下载整个目录结构,它只能用于下载单个文件,可使用 lftp 命令下载整个目录。

封装为 shell 脚本后,也可以进一步通过服务器实现远程打包、传输等操作。

更新:经过实际使用体验,推荐直接只使用 lftp 完成上传下载即可。

安装 ncftp / lftp

Ubuntu 安装:

apt-get install ncftp lftp

Mac 安装:

brew install ncftp lftp

ncftp 上传目录操作

比如,将本地的 ~/project/out/* 下的所有文件上传到 FTP目录 /home 下。

ncftpput -u '用户名称' -p '密码' -P 21 -m -R 地址 /home ~/project/out/*

参数说明:

  • -m:如果目标目录不存在,传输前先在目录位置尝试创建目录
  • -R:递规传子目录

lftp 上传与下载

配置

创建配置文件: ~/.config/lftp/rc

如果服务器不是 ssl 模式验证,需设置:

set use-feat no
set ssl-allow no

lftp 同步目录到服务器

lftp 可以将目录同步到服务器,传输速度比 ncftp 以上用法更快,更推荐使用。

lftp username:password@hostname <<EOF
mirror -R /localpath /remotepath
bye
EOF

lftp 下载目录到本地

使用 lftp 进行下载;通过 quit 命令,标记处理完毕后退出可交互界面。

lftp -u username,password -e "mirror /remotepath /localpath; quit" ftp://hostname
本文收录于专栏
整理一些开发相关的好用软件、网站、工具等