一、shell指令碼示例:
cd /path_you_want_to_upload(download)
ftp -niv <<- eof
open ip_address
user username password
ascii(or bin)
put *(or get)
byeeof
下面詳細講解以下這段**:
1. cd /path_you_want_to_upload(download)
2. ftp -niv <<- eof
由於是指令碼,因此我們要給此ftp指令碼定義乙個結束的符號,在這裡,定義的結束符是「eof」。你也可以自己來定義其他的。不過建議用「eof」,這在絕大多數程式語言中,都表示結束:end of file。
-v:顯示
遠端伺服器的所有響應資訊;
-n:限制ftp的自動登入,即不使用;
-i:關閉多個檔案傳輸時的互動過程;
3. open ip_address
表示連線ftp站點,這裡的ip_address就是ftp站點的ip位址。
4. user username password
這是你進入該ftp站點的使用者名稱和密碼。以上兩個結合起來,就相當於我們通過瀏覽器進入ftp站點時候,經常使用的ftp://username:password@ip_address的辦法。
5. ascii(or bin)
我們都知道ftp傳送有兩種方式:ascii和binary。這裡就是指定你要傳送的方式。這很重要,因為這將決定你傳送或者獲取的檔案是否正常可用。
6. put *(or get)
put *表示將第一條cd進入的路徑下所有的檔案都傳送到剛剛連線進入的ftp站點。當然,你也可以指定某乙個或者幾個檔案,而不一定是所有的。而get則表明是將剛剛進入的ftp站點那個ftp跟目錄下的檔案獲取到本地——第一條cd命令進入的那個路徑下。當然,如果你所需要的檔案不在ftp的根目錄下,在使用這個命令之前,你還要使用cd命令來修改一下ftp站點的當前路徑。
7. bye
完成應該完成的工作以後,當然就是斷開和ftp站點的連線了。
8. eof
這個符號之前已經講過。當指令碼遇到這個符號的時候,它就知道應該結束了。
關於shell指令碼實現的ftp傳輸的返回值問題:
有乙個需要注意的地方,就是在該段程式的後面,你需要去判斷自動ftp是否成功了——就是你傳送或者獲取是否成功了。這裡的判斷也有兩個思路:
1. 如果是獲取,則在本地判斷是否已經成功獲取。如果是傳送,則需要再次呼叫自動ftp指令碼,在ftp伺服器正確的目錄去判斷是否傳送成功。不過這樣的辦法顯然是「笨重」的;
2. 通過shell常用的方式:$?來判斷是否成功,如果返回值是0則表示成功,而返回值非0則表示沒有成功——但是,我所說的需要注意的地方,正是這裡需要注意的。其實以上**,不管是否自動ftp是否成功,返回值其實都是0。這會讓很多人困擾,為什麼呢?不要忘記了,其實你最後的**指令碼是eof,所以,不管你前面自動ftp傳送還是獲取都是失敗的,其實這個正常結束的符號讓這個指令碼「正常結束」了,因此,$?的返回值就是0了。
二、ftp命令
1.檢視ftp伺服器上的檔案
dir 命令:顯示目錄和檔案列表。
ls 命令:顯示簡易的檔案列表。
cd 命令:進入指定的目錄。
dir命令可以使用萬用字元「*」和「?」,比如,顯示當前目錄中所有擴充套件名為jpg的檔案,可使用命令 dir *.jpg。
cd命令中必須帶目錄名。比如 cd main 表示進入當前目錄下的main子目錄,cd .. 表示退回上一級子目錄。
2.傳輸型別
type 命令:檢視當前的傳輸方式。
ascii 命令:設定傳輸方式為ascii碼方式。
binary 命令:設定傳輸方式為二進位制方式。
mdelete命令:批量刪除檔案
4.結束命令
close 命令:結束與伺服器的ftp會話。
quit 命令:結束與伺服器的ftp會話並退出ftp環境。
bye 命令:結束與伺服器的ftp會話並退出ftp環境。
5.其它命令
status 命令:顯示當前ftp狀態
prompt 命令: 切換互動式指令,預設開啟on/off(使用 mput/mget 時不用每個檔案皆詢yes/no)
delete 命令: 刪除遠端主機中的檔案
6.其它ftp使用技巧
**:參考:
shell實現ftp自動備份
功能 環境 倆臺機器都是centos4.5 x86 1.ftp伺服器主機資訊 ftp伺服器主機名server vftp服務端 vsftp 2.0.1 5.el4.5 vftp伺服器ftp目錄預設是系統使用者所在目錄 這裡的使用者為ftptest,家目錄為 home ftptest ip 192.16...
shell指令碼實現ftp自動備份
ftp命令把遠端計算機上的檔案傳輸到本地計算機時,需要和使用者互動。怎樣使互動過程自動化呢?利用here文件 bin sh ftp ivn 210.29.28.124 解釋 i 關閉多檔案傳輸過程中的互動提示,所以不會再有讓使用者輸入使用者名稱和密碼的提示 n 阻止了初始連線時的自動登入 v 將ft...
用二句Shell命令實現FTP批量上傳資料夾
實現 如下 bin bash updir root tmp 要上傳的資料夾 todir tmp 目標資料夾 ip 127.0.0.1 伺服器 user username ftp使用者名稱 password passwd ftp密碼 sss find updir type d printf todir...