Shell腳本實(shí)現(xiàn)FTP自動(dòng)上傳和下載文件
在日常備份數(shù)據(jù)時(shí),省時(shí)的方法是在后臺通過ftp傳輸數(shù)據(jù),可以嘗試以下的操作方式。
登錄FTP實(shí)現(xiàn)下載文件功能
FTP服務(wù)器:192.168.0.199 FTP路徑:/ftphome/data 本地路徑:/local/data 將文件從FTP下載到本地的腳本如下:
批量下載腳本代碼
#從FTP上批量下載文件到本地 #!/bin/sh ftp -v -n 192.168.0.199<<EOF user ftpuser ftppwd binary cd /ftphome/downloadData lcd /local/getDownloadData prompt mget * bye EOF echo "download from ftp successfully"
下載單個(gè)文件腳本代碼
#從FTP上下載單文件到本地 #!/bin/sh ftp -v -n 192.168.0.199<<EOF user ftpuser ftppwd binary cd /ftphome/downloadData lcd /local/getDownLoadData prompt #get test.txt get test.txt bye EOF echo "download from ftp successfully"
登錄FTP實(shí)現(xiàn)上傳文件功能
FTP服務(wù)器:192.168.0.199 FTP路徑:/ftphome/uploadData 本地路徑:/local/getUploadData 將文件從本地傳到FTP的腳本如下:
批量上傳腳本代碼
#從本地向FTP批量上傳文檔 #!/bin/sh ftp -v -n 192.168.0.199<<EOF user ftpuser ftppwd binary hash cd /ftphome/uploadData lcd /ftphome/getUploadData prompt mput * bye #here document EOF echo "commit to ftp successfully"
上傳單個(gè)文件腳本代碼
#從本地向FTP上傳單個(gè)文檔 #!/bin/sh PUTFILE = test.txt ftp -v -n 192.168.0.199<<EOF user ftpuser ftppwd binary cd /ftphome/uploadData lcd /ftphome/getUploadData prompt put $PUTFILE bye #here document EOF echo "commit to ftp successfully"
命令解釋
登錄FTP
ftp -i -n 192.168.0.199 << EOF
<< 是使用即時(shí)文件重定向輸入 EOF是即時(shí)文件的標(biāo)志它必須成對出現(xiàn),以標(biāo)識即時(shí)文件的開始和結(jié)尾。 ftp常見的幾個(gè)標(biāo)志有:
- -d:使用調(diào)試模式,但必須編輯 /etc/syslog.conf 文件并添加以下中的一項(xiàng):user.info FileName 或 user.debug FileName。
- -g:禁用文件名中的元字符拓展,即取消全局文件名。
- -i :關(guān)閉多文件傳輸中的交互式提示。
- -n:防止在起始連接中的自動(dòng)登錄。否則, ftp 命令會(huì)搜索 $HOME/.netrc 登錄項(xiàng),該登錄項(xiàng)描述了遠(yuǎn)程主機(jī)的登錄和初始化過程。
- -v:顯示遠(yuǎn)程服務(wù)器的全部響應(yīng),并提供數(shù)據(jù)傳輸?shù)慕y(tǒng)計(jì)信息,即在程序運(yùn)行時(shí)顯示詳細(xì)的處理信息。
輸入FTP用戶名和密碼
user ftpuser ftppwd
ftpuser:登錄FTP時(shí)的用戶名 ftppwd:登錄FTP時(shí)的密碼
通過binary命令傳輸文件
binary
FTP文件傳輸類型有: ascii、binary、ebcdic、image、local M 和 tenex。
- – ascii:將文件傳輸類型設(shè)置為網(wǎng)絡(luò) ASCII。此類型為缺省值,即默認(rèn)使用ascii方式進(jìn)行傳輸。
- – binary:將文件傳輸類型設(shè)置為二進(jìn)制映像。需要使用binary方式傳輸?shù)奈募愋陀蠭SO文件、可執(zhí)行文件、壓縮文件、圖片等。此類型可能比 ASCII 傳送更有效。
- – ebcdic:將文件傳輸類型設(shè)為 EBCDIC。
- – image:將文件傳輸類型設(shè)置為二進(jìn)制映像。此類型可能比 ASCII 傳送更有效。
- – local M:將文件傳輸類型設(shè)置為本地。M 參數(shù)定義每計(jì)算機(jī)字位的十進(jìn)制數(shù)。此參數(shù)沒有缺省值。
- – tenex:將文件傳輸類型設(shè)為 TENEX 機(jī)器需要的類型。
切換散列符號 (#) 打印
hash
當(dāng)用get或put命令傳送一個(gè)數(shù)據(jù)塊時(shí),讓FTP顯示一個(gè)#,這是看得見的確定數(shù)據(jù)在傳輸?shù)男盘?,在用戶不確信網(wǎng)絡(luò)是否工作時(shí)有用。當(dāng)傳輸很大的文件時(shí),如果FTP已顯示這種信息,表示傳輸正在進(jìn)行。hash命令是一個(gè)布爾變量式的命令,用hash命令打開顯示#開關(guān),再用hash命令關(guān)閉顯示。
切換目錄
分別在本地和FTP上進(jìn)入對應(yīng)文件夾下: 到FTP上對應(yīng)路徑(這里表示進(jìn)入/ftphome/downloadData的文件夾下):
cd /ftphome/downloadData
到本地的對應(yīng)路徑(這里表示在/ftphome/getDownloadData的文件夾下):
cd /ftphome/getDownloadData
切換交互式提示
prompt
使用mget或mput時(shí),prompt命令讓FTP在傳輸每個(gè)文件前進(jìn)行提示,這樣防止覆蓋已有的文件。若發(fā)出prompt命令時(shí)已經(jīng)啟動(dòng)了提示,F(xiàn)TP將把提示關(guān)掉,此時(shí)再傳輸所有的文件則不會(huì)有任何提問。
文件傳輸
下載文件
下載多個(gè)文件: 格式:mget [remote-files] 例如:獲取遠(yuǎn)端所在文件夾下所有文件
mget * #或 mget *.*
注:mget . 每下載一個(gè)文件,都會(huì)有提示。如果要除掉提示,則在mget . 命令前先執(zhí)行:prompt off。
下載單個(gè)文件: 格式:get [remote-file] [local-file] 例如:獲取遠(yuǎn)端FTP上的text.txt文件
get a.txt
上傳文件
上傳多個(gè)文件: 格式:mput local-files 例如:將所在文件夾下所有文件上傳到FTP上
mput *
上傳單個(gè)文件: 格式:put local-file [remote-file] 例如:將本地text.txt文件上傳到遠(yuǎn)端FTP上
put a.txt
斷開連接
bye
結(jié)束文件傳輸會(huì)話并退出 ftp 命令,與quit命令相同。
分界符標(biāo)志
... << EOF #execute shell EOF
EOF只是一個(gè)分界符標(biāo)志,完全可以用abc, ! 等替換,也一樣的功能,只是大家都習(xí)慣用EOF來表示。 <<用法:當(dāng)shell看到<<的時(shí)候,它就會(huì)知道下一個(gè)詞是一個(gè)分界符。在該分界符以后的內(nèi)容都被當(dāng)作輸入,直到shell又看到該分界符(位于單獨(dú)的一行)。因此分界符可以是定義的任何字符串。
解決:ftp命令行不支持目錄下載 通過wget得到解決 #wget ftp://IP:PORT/* --ftp-user=xxx --ftp-password=xxx -r 注: 星號*必須有,否則下載下來的就一個(gè)文件index.html -r參數(shù)就是用來目錄下載的
到此這篇關(guān)于Shell腳本實(shí)現(xiàn)FTP自動(dòng)上傳和下載文件的文章就介紹到這了,更多相關(guān)Shell FTP自動(dòng)上傳和下載文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 自動(dòng)化下載并檢測ftp文件備份的shell腳本
- PowerShell 自動(dòng)備份oracle并上傳到ftp
- CentOS中使用Shell腳本實(shí)現(xiàn)每天自動(dòng)備份網(wǎng)站文件和數(shù)據(jù)庫并上傳到FTP中
- Shell腳本自動(dòng)備份MySQL到FTP并定期清理過期備份
- Linux下使用Shell腳本實(shí)現(xiàn)ftp的自動(dòng)上傳下載的代碼小結(jié)
- linux和windows下的自動(dòng)ftp腳本(shell bat)
- linux下實(shí)現(xiàn)ftp自動(dòng)備份shell腳本
- linux下自動(dòng)備份MySQL數(shù)據(jù)并上傳到FTP上的shell腳本
相關(guān)文章
Shell腳本實(shí)現(xiàn)刪除一年前文件功能分享
這篇文章主要介紹了Shell腳本實(shí)現(xiàn)刪除一年前文件功能分享,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-12-12
shell 判斷字符串是否存在數(shù)組中的實(shí)現(xiàn)示例
這篇文章主要介紹了shell 判斷字符串是否存在數(shù)組中的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
shell使用mysqld_multi自動(dòng)做多實(shí)例從庫腳本
這篇文章主要介紹了shell使用mysqld_multi自動(dòng)做多實(shí)例從庫腳本,需要的朋友可以參考下2014-03-03
關(guān)于"Argument?list?too?long”參數(shù)列表過長的四種解決方法
Linux下報(bào)錯(cuò)“命令參數(shù)列表過長”,在用mv命令一次移動(dòng)3萬多個(gè)文件時(shí)失敗了,原始命令類似這樣:”mv?$(ls?dir1)?dir2“,錯(cuò)誤提示的中心思想是:”你這參數(shù)也太TM多了吧“,本文給大家分享四種解決”Argument?list?too?long”參數(shù)列表過長,感興趣的朋友一起看看吧2023-02-02

