簡單介紹
網(wǎng)上有很多圖形化界面的 FTP 工具,但我的工作環(huán)境中使用了很多自動化工具必須在命令行下操作纯命,Windows 和 Linux 下都有基于命令行的 FTP 工具代态,而它們的使用方式也都大同小異绒尊,這里介紹的方法都是通用的。
使用 .netrc 配置文件進行自動化操作
.netrc 文件可以看做 FTP 工具的默認命令列表男图,當你不使用任何參數(shù)調(diào)用 FTP 命令時它會自動讀取這個文件中的內(nèi)容執(zhí)行命令,下面的就是一個簡單的例子:
在自己的home目錄下建立一個權(quán)限600(權(quán)限必須是600甜橱,少了不行逊笆,多了也不行),名為 .netrc 的文件岂傲,內(nèi)容如下:
machine 192.168.0.1 login <ftpuser> password <ftpuser_password>
這樣以后你每次 ftp 192.168.0.1 的時候系統(tǒng)都會幫你以用戶名ftpuser登錄到該服務器难裆,利用這個特征可以實現(xiàn)自動ftp。
如果想要每天5:00到192.168.0.1機器上面獲得 /test 目錄下的文件 test.txt 镊掖,可以建立一個文件 ftp_cmd乃戈,內(nèi)容為:
cd test
get test.txt
bye
然后在 Linux 系統(tǒng)中使用 crontab -e
設置定時任務:
0 5 * * * ftp 192.168.0.1 < ftp_cmd
附:.netrc 的用法
netrc 中應包含的基本命令:
FTP中有幾十個命令,在.netrc中應該設置的大致有如下幾條:
default login password
在互聯(lián)網(wǎng)中存在大量匿名ftp帳戶亩进,用戶在不同的主機間頻繁登錄anonymous帳戶偏化,輸入自己的電子郵件地址作為口令,這種輸入極其繁瑣镐侯,完全有必要利用.netrc文件在進入ftp時自動完成該過程侦讨。binary
許多用戶在下載大量文件之后才意識到下載的文件是二進制文件驶冒,而自己卻是使用ascii方式傳輸使下載文件無法使用,做了許多無用功韵卤。在.netrc文件中提前將傳輸方式設置為binary 完全可避免出現(xiàn)上述情況骗污。runique
在浩如煙海的文件中有大量同名文件,如readme、index等沈条,如果將同名文件下載到同一目錄則新傳的文件會覆蓋原同名文件需忿。為了使具有潛在重要性的文件不至于被意外覆蓋,也需要在.netrc文件中設置runique參數(shù)防止上述錯誤蜡歹。prompt off
使用ftp時屋厘,經(jīng)常會用到mget或其它需要確認的ftp命令,將此確認過程取消可大大方便使用者月而。hash on
ftp中的hash命令使得在進行文件傳輸時每傳輸1千字節(jié)就在屏幕上顯示一個"#"號,通過觀看屏幕上的"#"號可以很直觀地看到傳輸速度的快慢汗洒,以及文件的傳輸完成情況。idle 7200
目前國內(nèi)的Internet專線速率普遍偏低父款,用戶數(shù)卻在急劇膨脹溢谤,所以用ftp傳輸銷大一些的文件時經(jīng)常會因為線路擁塞而斷線,為了減少因斷線而反復登錄的次數(shù)憨攒,需將idle命令的參數(shù)設置為最大(一般為7200秒)世杀。macdef
macdef定義一個宏,macro_name為宏定義的名稱肝集。在macdef行下瞻坝,可輸入任何有效的ftp命令,并以空行結(jié)束宏定義杏瞻,執(zhí)行時只需在宏名前加"$"號即可湿镀。如果宏名定義為init,則該宏命令在啟動ftp后自動加以執(zhí)行伐憾,無需用戶輸入$macro_name勉痴。
在命令行下指定用戶名和密碼:
ftp://dev:abcd1234@10.208.66.10://pub/readme.txt
常用 FTP 命令列表
FTP的命令行格式為:ftp -v -d -i -n -g [主機名]
,各個參數(shù)含義如下:
- -v 顯示遠程服務器的所有響應信息
- -n 限制ftp的自動登錄树肃,不使用 .netrc 文件
- -d 使用調(diào)試方式
- -g 取消全局文件名
FTP使用的內(nèi)部命令如下(中括號表示可選項):
![cmd[args]]
在本地執(zhí)行交互shell蒸矛,exit回到ftp環(huán)境,如:!ls*.zip$macro-name [args]
執(zhí)行宏定義的命令列表account [password]
提供登錄遠程系統(tǒng)成功后訪問系統(tǒng)資源所需的補充口令append local-file [remote-file]
將本地文件追加到遠程系統(tǒng)主機胸嘴,若未指定遠程系統(tǒng)文件名雏掠,則使用本地文件名ascii
使用 ascii 模式傳輸bell
每個命令執(zhí)行完畢后計算機響鈴一次bin
使用二進制文件傳輸方式bye
退出ftp會話過程case
使用 mget 時將遠程主機文件名中的大寫轉(zhuǎn)為小寫字母cd remote-dir
進入遠程主機目錄cdup
進入遠程主機目錄的父目錄chmod mode file-name
將遠程主機文件file-name的存取方式設置為mode,如:chmod 777 a.outclose
中斷與遠程服務器的ftp會話(與open對應)cr
使用asscii方式傳輸文件時劣像,將 \r\n 轉(zhuǎn)換為 \ndelete remote-file
刪除遠程主機文件debug[debug-value]
設置調(diào)試方式乡话,顯示發(fā)送至遠程主機的每條命令,如:debug 3耳奕,若設為 0 表示取消debugdir remote-dir local-file
顯示遠程主機目錄绑青,并將結(jié)果存入本地文件disconnection
同closeform format
將文件傳輸方式設置為format诬像,缺省為file方式get remote-file [local-file]
將遠程主機的文件 remote-file 傳至本地硬盤的 local-filehash
每傳輸1024字節(jié)顯示一個hash符號(#)help [cmd]
顯示ftp內(nèi)部命令cmd的幫助信息,如:help getidle [seconds]
將遠程服務器的休眠計時器設為[seconds]秒image
設置二進制傳輸方式(同binary)lcd[dir]
將本地工作目錄切換至dirls [remote-dir] [local-file]
顯示遠程目錄remote-dir闸婴, 并存入本地文件local-filemacdef macro-name
定義一個宏坏挠,遇到macdef下的空行時,宏定義結(jié)束mdelete [remote-file]
批量刪除遠程主機文件mdir remote-files local-file
與dir類似但可指定多個遠程文件邪乍,如 :mdir .o..zipoutfilemget remote-files
批量傳輸多個遠程文件mkdir dir-name
在遠程主機中建一目錄mls remote-file local-file
同nlist降狠,但可指定多個文件名mode [modename]
將文件傳輸方式設置為modename,缺省為stream方式modtime file-name
顯示遠程主機文件的最后修改時間mput local-file
將多個文件傳輸至遠程主機newer file-name
如果遠程機中 file-name 的修改時間比本地硬盤同名文件的時間更近庇楞,則重傳該文件nmap [inpattern outpattern]
設置文件名映射機制榜配, 使得文件傳輸時某些字符相互轉(zhuǎn)換, 如:nmap $1.$2.$3[$1吕晌,$2].[$2蛋褥,$3],則傳輸文件a1.a2.a3時聂使,文件名變?yōu)閍1,a2谬俄。該命令特別適用于遠程主機為非UNIX機的情況ntrans [inchars] [outchars]]
設置文件名字符的翻譯機制柏靶,如ntrans1R,則文件名LLL將變?yōu)镽RR溃论。open host[port]
建立指定ftp服務器連接屎蜓,可指定連接端口passive
進入被動傳輸模式prompt
設置多個文件傳輸時的交互提示put local-file [remote-file]
將本地文件local-file傳送至遠程主機pwd
顯示遠程主機的當前工作目錄quit
同bye,退出ftp會話quote arg1钥勋,arg2...
將參數(shù)逐字發(fā)至遠程ftp服務器炬转,如:quote syst ...recv remote-file [local-file]
同getreget remote-file[local-file]
類似于get,但若local-file存在算灸,則從上次傳輸中斷處續(xù)傳rhelp [cmd-name]
請求獲得遠程主機的幫助rstatus[file-name]
若未指定文件名扼劈,則顯示遠程主機的狀態(tài),否則顯示文件狀態(tài)rename[from][to]
更改遠程主機文件名reset
清除回答隊列restart marker
從指定的標志marker處重新開始get或put菲驴,如:restart 130rmdir dir-name
刪除遠程主機目錄runique
設置文件名唯一性規(guī)則荐吵,若文件存在,則在原文件后加后綴.1赊瞬, .2等send local-file [remote-file]
同putsendport
設置PORT命令的使用site arg1先煎,arg2 ...
將參數(shù)作為SITE命令逐字發(fā)送至遠程ftp主機size file-name
顯示遠程主機文件大小,如:site idle 7200status
顯示當前ftp狀態(tài)struct [struct-name]
將文件傳輸結(jié)構(gòu)設置為struct-name巧涧,缺省時使用stream結(jié)構(gòu)system
顯示遠程主機的操作系統(tǒng)類型薯蝎,一般會被遠程主機忽略掉這個命令tenex
將文件傳輸類型設置為TENEX機的所需的類型tick
設置傳輸時的字節(jié)計數(shù)器trace
設置包跟蹤type [type-name]
設置文件傳輸類型為type-name,缺省為ascii谤绳,type binary 設置二進制傳輸方式占锯。umas k[newmask]
將遠程服務器的缺省umask設置為newmask袒哥,如:umask 3user user-name [password] [account]
向遠程主機表明自己的身份,需要口令時烟央,必須輸入口令统诺,如:user anonymous my@email。verbose
同命令行的-v參數(shù)疑俭,即設置詳盡報告方式粮呢,ftp 服務器的所有響 應都將顯示給用戶,缺省為on.?[cmd]
同help.