Ftp 增强工具比较
现在与主机交互的首选工具应该是 ssh
相关的工具了,比如 scp
, rsync
。因为他们都是建立在传输层基础上的安全协议。
而老牌的 ftp
则不然,因为他们访问主机时的登录交互容易被窃听,有泄密的可能性。ftp
也有对应的安全版本 sftp
, 但是用的就很少了,因为 sftp
也是基于 ssh
的,但是 ssh
自带传输特效,所有 sftp
就很少用的了。
本篇为什么要写 ftp
,是因为对接老的系统的时候,是超出我们控制的。
最近的项目中就需要把本地的数据包传到服务器上,因此找了几个 ftp
工具来分析了下。
主要的需求是
- CUI 非 GUI,因为需要结合 Shell 来写脚本
- 容易上传整个目录
- 可以指定上传路径
- 最好密码不要显示在命令行里
找了3个来分析了下功能 ftp
, ncftp
, lftp
ftp
首先当然是用系统自带的 ftp
,
put
命令不能指定目标路径,需要先登录后cd
到目标路径- 不能指定整个目录上传,多个文件可以用
mput
密码可以带入
user@pass:host
中,放在 ~/.netrc 里面
在 ~/.netrc 里的格式是machine host/ip login USERNAME password PASSWORD
ncftp
ncftp
可以满足上面的所有需求
上传整个目录,包括子目录
ncftpput -u user -p pass -R host /host/dir /local/dir
上传到指定路径
ncftpput -u user -p pass host /host/dir /local/path
隐藏密码
提示输入密码
ncftpput -u user host /host/dir /local/path
放入配置文件
ncftpput -f login.cfg host /host/dir /local/path
login.cfg 文件是这个格式
host example.com user USERNAME pass PASSWORD
lftp
lftp
满足了我的所有需求
镜像整个目录,包括子目录
lftp -e 'mirror -R /local/dir /host/dir' host
上传到指定路径
lftp -e 'put -O /host/dir/ /local/path; bye' host
密码方式与
ftp
相同
其他比较
使用 ncftp
或者 lftp
登录后,都可以使用上下键历史命令回显,Tab
键显示候选文件,文件补全等功能。他们的功能比较相近,由于满足了我要的需求,没有再深入比较了。