之前上传文件到 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