1. 程式人生 > >linux中下載ftp檔案的幾個方法

linux中下載ftp檔案的幾個方法

一、最簡單的方法: 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

curl支援FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET 和TFTP,方便在自己的程式中呼叫。同時支援cookie、代理、密碼和證書驗證。非常強大。