一、最简单的方法: wget
下面的命令用来下载ftp服务器上指定目录的所有文件
- wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r
-r 参数表示递归下载;
可以使用--directory-prefix=/mypath/ 指定下载后存储路径;-nH选项可以不在本地创建服务器上的目录结构
另一个令人迷惑的选项是--delete-after,它并不是用来删除服务器上的已下载文件,而是用来删除本机的;
wget之所以是wget而不是wput,它只能进行下载操作,不支持对ftp服务器上的任何写操作,比如删除。
二、可以删除文件的方法:lftp
项目需求是下载ftp服务器上的指定文件夹取内的所有文件,并于下载后删除,wget不能满足要求,于是改写出下面的脚本。
mget命令可以下载多个文件,-E参数表示下载后删除服务器上的文件。
- #!/bin/bash
- #指定ftp服务器的ip
- serverip=1.2.3.4
- #指定ftp服务器的ftp用户
- serveruser=root
- #指定ftp服务器的ftp用户密码
- serverpass=123456
- #指定client主机本地下载文件存放的目录
- localdir=./data
- logfile=../log/ftp_download.log
- #指定server主机的ftp目录
- remotedir=./
- #指定server主机的主机名
- host=test_host
- #切换到本地下载文件存放的目录
- cd $localdir
- #输入开始备份的信息
- echo "Starting FTP Download on " $host
- #连接ftp服务器
- /usr/bin/lftp << EOF
- open $serverip
- user $serveruser $serverpass
- #切换到server主机的ftp目录
- echo "cd " $remotedir
- cd $remotedir
- #列出ftp服务器ftp目录中文件列表并存放到client中的$localdir中
- ls . >> $logfile
- #下载ftp服务器ftp目录中的所有文件
- mget -E *.txt
- #退出ftp服务器
- bye
三、其他方法
系统中的ftp命令,和强大的。
curl支持FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET 和TFTP,方便在自己的程序中调用。同时支持cookie、代理、密码和证书验证。非常强大。