********************************************************* 國 立 交 通 大 學 計 算 機 中 心 通 訊 第 78 期 (中華民國 82 年 5 月) Page 23 - 25 ********************************************************* FTP的一個小技巧 計算機中心 王銘欽 對於網路的愛用者而言,FTP真是一個非常方便的工具,只要幾個 簡單的指令,就可以隨心所欲的讓你將想要的檔案,經由網路從一部主機 ,傳到另一部主機上。非但如此,因FTP而產生的一項網路新寵─Anonymous FTP更是網路愛用者的最愛,無時無刻吸引著成千上萬的使用者。你是被 Anonymous FTP 所深深吸引的使用者之一嗎?這不重要,重要的是,你在 使用FTP 時曾遇到過傳輸的檔案太大,或網路太忙而使你必須枯坐在終端 機前等待的情況嗎? 遇到上面的情況,或許你是在 Console 上多開幾個 Window、或使用 NCSA的時多開幾個Sessions而免去枯坐等待的困擾,但這並非根本的解決 之道,因為你終究還是得坐在Console 或PC前,等待這些FTP 的工作完成 ,如何是好呢? 現在提供一個方法,使你的FTP 可以在Background執行。讓你不必為 一個未完成的FTP ,停留在電腦前面。熟悉UNIX的人都知道在指令之後加 一個& ,即表示須在Background執行該指令,但FTP 是一個交談式的工具 ,我們必需輸入指令以到達我們所要的目錄,再取回我們想要的檔案,這 些過程似乎無法在Background下動作,這樣如何可以在Background下執行 FTP 呢? 很簡單,如果我們把過程所需的指令事先寫在一個檔案,再讓 ftp 自動去讀取這些指令並執行,就不就可以省去輸入指令並等待的麻煩 ,進而可以讓FTP 到background去執行了嗎?接下來,就一步步說明如何 來寫這樣一個檔案,讓FTP乖乖的去Background工作。 舉例來說:我們現在於AMY上,要到 ccsun1 的 Anonymous FTP server取一些檔案回來,過程如下: amy[stdnt/u8123456]%ftp ccsun1 Connected to ccsun1.cc.nctu.edu.tw. 220 ccsun1 FTP server (Version 4.162 Tue Nov 1 10:50:37 PST 1988) ready Name (ccsun1:u8123456): anonymous 331 Guest login ok, send ident as password Local directory now /usr/people/stdnt/u8123456/virus ftp> cd virus 250 CWD command successful. ftp> prompt ←切掉交談模式 Interactive mode off. ftp> binary ←設定二進位傳輸模式 200 Type set to I. ftp> mget *.* ←取回所有的檔案 local: readme.1st remote: readme.1st 200 PORT command successful. ... 150 Opening BINARY mode data connection for readme.1st (5012 bytes) 226 Transfer complete. 5012 bytes received in 0.02 seconds (244.24 Kbytes/s) ftp> bye ←結束FTP 221 Goodbye. amy[stdnt/u8123456]% 以上便是利用FTP 傳回檔案的一般過程,順利的話,一下子就可以 結束FTP 檔案傳輸,但如果不順利的話,你可能會開始不耐煩。現在, 我們將上面的過程改以Background來做。 1.首先,將過程所用到的指令依順序放入檔案中,如下: amy[stdnt/u8123456]%cat ftp_command !mkdir virus lcd virus cd virus prompt binary mget *.* bye 2.其次,建一個.netrc檔,讓ftp 自動到此讀取Username 與Password,方可順利login 到Anonymous FTP的主機,如下: amy[stdnt/u8123456]%cat .netrc machine ccsun1 login anonymous password guest 帳號 密碼 3.最後再執行下面指令即可。 amy[stdnt/u8123456]%nohup ftp ccsun1 < ftp_command > message & 其中nohup表示即使logout 系統也不會kill這process。 而 > message 是將過程中的訊息存到 message 這個檔案, 以便在其中有錯誤發生時,我們可以從中得到錯誤訊息。 不難吧?各位不妨試試,以解除枯坐螢幕前等待FTP 結束的 苦狀。 ----------------- [ 整理者的話 ] 真的, 上述的技巧是一個十分方便的檔案傳輸方法, 也節省了我們 不少的時間, 免於枯坐等候. 但是, 如果因為它的方便, 每個人都在尖峰時段使用, 心裡覺得反 正不須等候而任意使用, 那將只有造成大家的不便, 蓋檔案傳輸對線路 造成的負荷不小, 若大量傳輸或大家都同時使用, 相對的, 所有的傳輸 都會趨於遲鈍, 只會弄巧成拙, 耽擱了自己也延誤了別人. 為此, 個人在此呼籲各位使用者, 站在網路禮節與給大家方便的原 則上, 督促自己多加利用離峰時段進行傳檔工作, 尤其傳輸速率較低的 線路上的工作, 實不容小視!