一、最簡單的方法: 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伺服器的ipserverip=1.2.3.4#指定ftp伺服器的ftp使用者serveruser=root#指定ftp伺服器的ftp使用者密碼serverpass=123456#指定client主機本地下載檔案存放的目錄localdir=./datalogfile=../log/ftp_download.log#指定server主機的ftp目錄remotedir=./#指定server主機的主機名稱host=test_host#切換到本地下載檔案存放的目錄cd $localdir#輸入開始備份的資訊echo "Starting FTP Download on " $host#串連ftp伺服器/usr/bin/lftp << EOFopen $serveripuser $serveruser $serverpass#切換到server主機的ftp目錄echo "cd " $remotedircd $remotedir#列出ftp伺服器ftp目錄中檔案清單並存放到client中的$localdir中ls . >> $logfile#下載ftp伺服器ftp目錄中的所有檔案mget -E *.txt#退出ftp伺服器bye
三、其他方法
系統中的ftp命令,和強大的curl。
curl支援FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET 和TFTP,方便在自己的程式中調用。同時支援cookie、代理、密碼和認證驗證。非常強大。