用FTP命令实现批量文件传输

  • Posted on
  • by

不同机器之间在传输文件的时候,经常需要用到ftp。FTP(File Transfer Protocol),就是文件传输协议的简称。关于ftp的原理或许很多人都不了解,但是用ftp进行文件的传输却是很多人有过的经历。

在使用ftp进行本地机器和ftp服务器间进行文件传输的时候,常用的工具有cuteftp,leapftp,还有filezilla。前两个软件或许大多数人都比较熟悉,在破解软件的网络传输类经常是排在前列的。filezilla是开源的ftp软件,我现在用的是这个软件,据我的体验,filezilla的用户界面和传输速度非常的优秀。

如果不是很频繁的进行和ftp服务器直接的文件传输,浏览器其实就可以进行访问ftp服务器。一般情况下,在IE浏览器或者firefox浏览器输入ftp地址就可以匿名访问服务器。如果是非匿名的服务器,浏览器有可能会弹出输入用户名和密码的对话框。实际上,我们可以在一次输入ftp服务器,用户名和密码。比如输入ftp://username:[email protected]就可以访问盘古的空间。

当然,还有时候,如果我们使用的是linux,或者安装了cygwin,如果要访问ftp服务器,只要在shell命令行模式就可以访问ftp服务器。详细的访问方式就是:
$:ftp -n host   #禁止匿名访问ftp服务器。可以增加-v选项显示ftp服务器提示信息。
$:user user_name passwd   #完成以上操作后,输入user,后面紧跟ftp服务器的用户名和密码。

这样就登录到ftp服务器上面,可以进行一些上传和下载的任务了。

别看命令行模式功能似乎太少,而且界面很不友好。其实在批量工作的时候,命令行模式才是王道,图形界面对于自动化和批量工作就是累赘,如果你每天要点几百次鼠标,你就会发现键盘的强大了。比如这里就有一小段shell脚本,可以实现自动下载文件。

#!/bin/sh 
#save as FtpPut.sh
F="xxxx.ftp" 
echo "open 192.168.7.51 21"     > $F      #ip地址和端口改为对应的ftp服务器地址和端口
echo "user username passwd"     >> $F     #username和passwd也一样
echo "bin"                      >> $F 
echo "cd /home/xxx/"            >> $F     #进行操作的ftp服务器路径
echo "mput $1"                  >> $F 
echo "bye"                      >> $F 
ftp -i -in < $F 
rm -rf $F 
将代码令存为FtpPut.sh后,只要在命令行下面执行
$:FtpPut.sh a.txt  
就可以实现将a.txt文件上传到ip地址为192.168.7.51,端口为21,的ftp服务器/home/xxx/路径下面。这段代码稍作修改,比如将mput改为mget就可以实现自动下载。

参考:Linuxsir