Ftp

檔案傳輸協定 - FTP 簡介

FTP 基本操作

FTP 操作實例

特殊格式檔案

anonymous ftp

常用指令


Untitled Document
檔案傳輸協定 - FTP 簡介

♦ Major material is from 中正大學電算中心 蔡顯明

⊕ Concept

    在不同的電腦系統之間的檔案格式都不盡相同,因此要在在兩部不同的電腦 之間來傳遞檔案,就必須要有彼此都認可的共同規範才能順利的進行。

    FTP 就是用來規範不同電腦系統間傳輸檔案的共同協定,

    任何電腦系統只要遵循此協定,即可和其它不同的電腦系統之間互相傳遞檔案

    在國際學術網路上,有許多 Anonymous FTP Server (FTP 檔案伺服器), 在這些伺服器上存放著相當豐富的資源,包括 UNIX、PC、Mac、... 等各種 電腦系統的公用軟體(Public Domain)、以及各種技術文件、學術論文、研究報告 等..,這些包羅 萬象的資源,都可以利用 FTP 來擷取。

⊕ Command Example

    ftp abc.nxu.edu.tw (domain name) 或是 ftp 140.xxx.yy.zz (IP address) 如上例,你打了ftp abc.nxu.edu.tw,就表示你要和那台機器進行檔案傳送。 這時候,和telnet指令一樣,你必須有對方的帳號和密碼。例: $ ftp abc.nxu.edu.tw Connected to 140.54.16.3. 220 network FTP server (SunOS 4.1) ready. Name (140.54.16.3:joechen): b1234567 <-- 輸入帳號 331 password required for b1234567 Password: xxxxx <-- 輸入密碼 230 User b1234567 logged in. ftp> _ 這樣就進了ftp 了。ftp 基本上是一個交談式的環境。接下來,你就可以打一 連串的指令,在兩台電腦間,做檔案傳送的工作了。

⊕ Local 與 Remote

    所謂檔案傳輸就是在兩部電腦之間來互相傳遞檔案,為了區別雙方的身份, 通常我們把這兩端的電腦分為Local 及 Remote 兩端,

    區分Local 或 Remote 是以「電腦系統」的立場來看, 下達 ftp這個命令時,是在那一個系統之下,則這一端就是 local, 而被連接的另一端則是 remote 端,此與距離遠近並無關係。

    假如你在台大的工作站,從你的帳號上ftp 到交大,那台大的電腦就稱為 local machine ,而交大的電腦就稱為remote machine。 請注意,在ftp 中,絕大部分的指令,是針對remote端的電腦。 在下指令的時候,要搞清楚你所下的指令是下給哪一邊的,不要搞迷糊了。

Wrong

    一般初學者通常都會依照字面上的意義來解釋,以為 Local端是指使用者 面前正在操作的這一部電腦,Remote則是指較遠端的那一部電腦。

┌───────────────────────────────┐
│                                                              │
│        Local 系統> FTP Remote 系統                           │
│          ↑              ↑                                  │
│          │              └─ 右邊 (Right) 為 Remote 端      │
│          │                         =         =              │
│          │                                                  │
│          └─ 左邊 (Left) 為 Local 端                        │
│                     =        =                               │
│                                                              │
└───────────────────────────────┘

♦ 例如: When you use PC with NCSA ftp connecting to ftp.edu.tw:

C:\NCSA> FTP ftp.edu.tw                   

    ftp.edu.tw is Remote, 個人電腦為 Local 端

♦ When you login in kiki.cc.nccu.edu.tw and use ftp

 $ftp  ftp.edu.tw            

    ftp.edu.tw is Remote, kiki is Local

⊕ GET 與 PUT

.h2
GET 取得檔案 download
PUT 而將檔案放置到對方的電腦系統 upload

    在此要強調的是:所謂 GET 或 PUT 是以 Local 端的立場來看,換句話說, odin 主機為 Remote 端 由Remote 端取得檔案應下達 GET 指令,而將檔案放到 Remote 端則指令為 PUT。

♦ 抓(get) 檔案,指的是從"remote那端"抓過來。而

♦ 放(put) 檔案,指的是把東西放到"remote那端"去。

⊕ ASCII 檔與 Binary 檔

    儲存在電腦上的檔案,可分為 Ascii及 Binary 兩種格式, 在 FTP時必須宣告要傳輸檔案的格式,才可確保資料的正確性。

♦ 一般使用者時常忽略檔案的格式,所以有時後傳回的檔案會無法使用。

♦ 簡單的判斷方式

    可以用 MS-DOS 的 TYPE指令,或者是在 Unix 的 cat 指令,來顯示檔案內 容,看起來不會有亂碼的檔案即是 ASCII格式的文件檔。 否則,則可能為Binary 檔。

♦ Typical binary files

    PC上的執行檔 and Word files (.EXE .COM .DOC)

    各類壓縮檔( 如: .tar.Z .tar.gz .ZIP .hqx .tar .zip,..)

    影像檔 (.PCX .JPG .GIF .AVI .MPG )

    Sound Wave (.WAV .AU )

♦ 如果不知道檔案格式怎麼辦?

    那就以 binary 方式來傳遞,所有檔案大都可視為 binary 檔

Sat Feb 5 07:27:12 CST 2011

Untitled Document
FTP 基本操作

⊕ 由個人電腦 MS-DOS 環境下進行 ftp 連線

.h3

    要使用FTP 時,可以使用 NCSA Telnet 軟體中的 FTP.EXE 來進行檔案傳輸 連線。使用者必須先確定在您的 NCSA Telnet 中有包含 FTP.EXE 程式。

♦ 以下的操作假設 NCSA Telnet 是存放在 C:\NCSA> 路徑下。

⊕ C:\> CD \NCSA 改變工作目錄到 NCSA Telnet 所在的路徑

♦ C:\NCSA> FTP 進入 ftp 狀態

ftp> open    指定要連線的電腦 
		   (可用Host_Name 或 IP Address)
或:  C:\NCSA> FTP     進入 ftp 模式,並指定連接的電腦
例如:   ftp> open ftp  連結本校的 ftp Server (140.123.1.3)
	ftp> open 140.123.3.2    連結本校的主機 odin
    C:\NCSA> FTP 140.123.1.3        連結本校的 ftp Server

⊕ 由主機系統 UNIX 環境下進行 ftp 連線

.h3
  1.利用 NCSA Telnet 和要傳送檔案的電腦連線。
  2.在該電腦系統提式號下,下達 ftp 及 open   或者 ftp 連
    接要傳送檔案的對方電腦。
       
  例如: [odin][~][1]> ftp  ftp.nctu.ccu.edu.tw 連接交大的 ftp Server
  例如: [odin][~][1]> ftp  140.123.20.50   連接指定的電腦,可按Alt-F
					   連接回自己的個人電腦

⊕ 確認使用者身份

.h3
  在連接上另一部電腦後,系統會要求您輸入使用者帳號及密碼,以確保資料
  的安全。除非您有對方的帳號及密碼,否則將無法進行檔案傳輸。
  另外,您也可以在 ftp> 狀態下,使用 user  指令來輸入或更改
  使用者帳號及密碼,例如:
  ftp> user  fatcat       # 指定要和 fatcat 這個帳號的使用者傳輸檔案
  331 Password required for fatcat.
  Password:     # 輸入 fatcat 的密碼

⊕ 傳送自己的檔案

    要傳輸自己私人的檔案,則輸入您的帳號及密碼即可正確的進行連線。

⊕ 和別人進行檔案傳輸

    如果您要取得別人的檔案,或者將檔案傳送給別人,則除非對方肯告訴你帳 號及密碼,否則將無法互傳檔案。若是您為了和別人傳送檔案而告訴對方您 的帳號及密碼,最好在檔案傳送完畢時,馬上更改您的密碼,以避免您的帳 號被盜用。

⊕ 傳送 Anonymous FTP Server 的公用檔案

    若是您連接到 Anonymous FTP Server 來取得公用檔案時,通常FTP Server 的帳號大都為 anonymous 或 ftp ,至於密碼,有些 FTP Server 不需密碼 ,有些則會要求輸入 E-mail 的地址或者以guest 作為密碼,請依照對方的 指示輸入密碼,此為使用 Anonymous FTP Server 的最基本禮貌,請務必遵 守。

⊕ 查看檔案目錄

    要查看remote 端的檔案目錄,可以使用ls 或 dir 指令來查尋。另外,可 以使用 pwd 指令來顯示目前所在的路徑。

⊕ 改變取存檔案路徑

    若要改變 Remote 端的路徑,可以使用 cd 指令

cd  dir_name     // dir_name  為指定的 Remote 端路徑

    若要改變 Local 端的路徑,可以使用 lcd 指令

lcd  dir_name    // dir_name  為指定的 Local 端路徑

⊕ 檔案傳輸格式

    在 ftp> 提示號之下,下達 ascii 或 binary 來指定檔案傳輸格式。

⊕ 取得檔案 (GET)

    要取得一個特定檔案時:

get  filename    // filename  為要取得的檔案名稱

    要一次取得多個檔案時:

mget  filename   filename  為要取得的檔案名稱可以配合通用字元 "*"
                            來指定多個相關的檔案,例如: mget test*.*。

⊕ 放置檔案 (PUT)

    要放置一個特定檔案時:

 put  filename      filename  為要放置的檔案名稱

    要一次取得多個檔案時:

mput  filename   filename  為要放置的檔案名稱可以配合通用字元 "*"
		      來指定多個相關的檔案,例如: mput test*.*。

⊕ 切換交談狀態

    可以使用 prompt 指令切換交談狀態,以決定在傳輸檔案前是否要顯示提示 訊息要求使用者確認。

ftp> prompt
Interactive mode off.    原來為 on 則變為 off
ftp> prompt
Interactive mode on.     原來為 off 則變為 on

⊕ 線上求助

    ftp 提供許多命令,使用者可以隨時下達 "?" 或 "help" 指令來顯示輔助說 明畫面,以便得知有那些指令及其用法。

    使用者亦可在主機系統狀態下使用 man ftp 指令來查詢更多的相關資訊。 另外,在 gopher 或 USENET News 中亦可找到一些相關資料。

⊕ 結束 FTP

    要結束 ftp 時,只要在 ftp> 提示號之下鍵入 bye or quit 指令即可。

Sat Feb 5 07:27:12 CST 2011 Untitled Document
FTP 操作實例

    假設現在您要到本校的 Anonymous FTP Server 取得 /pub/others/kermit目 錄下的 msker312.exe 檔案,並且要放到您的個人電腦中的 C:\TMP 目錄下 ,操作步驟如下:

C:\NCSA> FTP ftp.nccu.edu.tw     指定要連接 ftp.nccu.edu.tw
  或    FTP 140.119.X.X
  :
Username:              輸入帳號
Password:             請輸入您的 E-mail Address
  :
ftp> cd /pub/others/kermit      跳到 /pub/others/kermit 目錄下
ftp> dir
-rw-r--r--  1   ftp  ccu_cc   205077  Jan   7  1993 msker312.zip
drwxr-xr-x  2   ftp  ccu_cc     1024  Dec   1  1992 mskermit3.0
drwxr-xr-x  2   ftp  ccu_cc      512  Dec   1  1992 mskermit3.11
drwxr-xr-x  2   ftp  ccu_cc     1024  Jan   5  1994 mskermit3.12
226 Transfer complete.
282 bytes received in 1 seconds (0.27 Kbytes/s)
ftp> lcd c:/tmp            # 將個人電腦切換到 C:\TMP 目錄
ftp> binary                # 以 binary 方式傳輸
ftp> get msker313.exe      # 輸入要取得的檔案名稱
200 PORT command successful.
550 msker313.exe: No such file OR directory.     # 表示找不到檔案
ftp> get msker312.zip
200 PORT command successful.
150 Opening ASCII mode data connection for msker312.exe (205077 bytes).
226 Transfer complete.            # 檔案傳輸完畢
local: msker312.zip remote: msker312.zip
206008 bytes received in 1.1 seconds (1.8e+02 Kbytes/s)
ftp> bye                       # 結束 FTP
Sat Feb 5 07:27:13 CST 2011 Untitled Document
特殊格式檔案

    因為網路資源是珍貴的,因此為了能減輕網路負擔,以便讓更多人使用,所以 在網路上的檔案大部分是以壓縮形式存放,壓縮檔案常見的通常有下列幾種格式:

⊕ Compressed Files

Extension Usage
.gz gunzip foo.gz; gzip -d file
.Z 由unix的 compress壓的,用 uncompress 解開
.z 由pack所壓,用unpack foo.z來解,gunzip也可以解。
.tar tar xvf foo.tar
.zip pkunzip foo.zip (DOS) or unzip foo.zip (UNIX)
.arj arj x foo.zip (DOS) or unarj foo.arj (UNIX)
.lzh lha x foo.lzh (DOS & UNIX)
.zoo zoo x foo.zoo

    嚴格說來,tar 並不算是壓縮檔,因為並它沒有壓縮效果,但是它能夠將整 個目錄結構保存起來,在做備份時可以利用,再利用其他壓縮程式來壓縮 。所以就有.tar.Z或.tar.gz的組合,只要分別解開就可以.或是利用 "zcat foo.tar.Z |tar xvf -"或"gzcat foo.tar.gz |tar xvf -"就可以 一次解開。

⊕ Other Binary Files

.jpg .gif 圖形檔
.gl .mpg .fli 動畫檔
.wav .voc .au 聲音檔
Sat Feb 5 07:27:13 CST 2011 Untitled Document
anonymous ftp

    執行ftp ,必須要有帳號和密碼。可是有時候,基於服務的理念, 有些sites 提供了很多豐富的資源,希望任何人都可以來抓取。 此時,就會提供一個叫做 anonymous 的帳號,不須密碼,讓任何人都可以來 取用他們所提供的檔案。這個anonymous 的帳號,只能用來 ftp,不能用來 telnet。

    只要在login 時,以ftp 或anonymous為username,詢問 password時, 多半可以亂打或直接按ENTER ,不過最好還是打入你的 E-mail address,提供給管理者作參考。例:

$ ftp abc.nxu.edu.tw
Connected to 140.54.16.3.
220 network FTP server (SunOS 4.1) ready.
Name (140.54.16.3:joechen): ftp       <-- 或anonymous
331 Guest login ok, send ident as password.
Password: xxxxx                       <-- 輸入你的E-mail address
230 Guest login ok, access restrictions apply.
ftp> _

⊕ 國內最大的ftp站 ── NCTUCCCA.edu.tw

    國內有一個非常大的anonymous ftp site,其domain name 為 NCTUCCCA.edu.tw ,或是稱為ftp.edu.tw。這是交大放在教育部的機器,由交 大的一個學生社團 ── 校園網路策進會(CCCA)來負責管理。它的硬碟有14GB ,到現在已經裝了有12GB之多的東西。它不但是全臺灣最大的ftp 站,也是世 界上的幾個有名的大站之一。所以,提到anonymous ftp ,你就不能不知道 NCTUCCCA。通常你要甚麼東西,來這裡就有了。IP address是140.111.1.10或 192.83.166.10。

⊕ 國內一些單位提供的anonymous ftp


140.111.1.10        NCTUCCCA.edu.tw、ftp.edu.tw、archive.edu.tw
192.83.166.10
140.92.1.45         iiidns.iii.org.tw
140.111.2.22        moers2.edu.tw
140.111.3.11        ibmserv.edu.tw
140.111.3.14        hpserv.edu.tw
140.112.28.163      earth.csie.ntu.edu.tw
140.113.4.11        ccsun1.cc.nctu.edu.tw
140.113.17.166      ccsun42.csie.nctu.edu.tw
140.113.250.246     jenny.nctu.edu.tw
140.115.19.11       softu1.ncu.edu.tw
140.115.83.90       imaux.mgt.ncu.edu.tw
140.116.2.10        mail.ncku.edu.tw
140.116.2.11        snoopy.ncku.edu.tw
140.117.11.33       irc.nsysu.edu.tw
140.117.72.1        mis.nsysu.edu.tw
140.120.1.21        pds.nchu.edu.tw
140.122.77.13       master.ice.ntnu.edu.tw
140.123.3.5         ccunix.ccu.edu.tw
140.126.4.221       cs.chpi.edu.tw
註:這些位址隨時都有可能更動、改名、取消、或新增,所以本附錄僅供參考。
Sat Feb 5 07:27:13 CST 2011 Untitled Document
常用指令

♦ Major material is from 台大計算機中心網路推廣協會 陳建志/黃振佑

⊕ ?

♦ 問號。列出所有ftp下的指令,或詢問某一指令之簡單說明。

⊕ open host

    連接到host去,做ftp的動作。相當於直接打ftp host。例: ftp abc.nxu.edu.tw 相當於 $ ftp ftp> open abc.nxu.edu.tw

⊕ user user-name [password]

    以user-name為帳號來進入這個remote系統。 平常一連上ftp server,就會自動執行這個動作。

☉ dir [remote-directory] [local-file]
ls [remote-directory] [local-file]

    列出remote端的目錄下的檔案。假使不加任何參數,就列出現行工作目錄下的 所有檔案。UNIX或DOS 下也有相同的指令。假如另外還指定了local-file的話 ,可以把列出結果存到local的一個檔案上。

⊕ cd remote-directory

    改變現行的工作目錄。UNIX和DOS 下都有相同的指令。你可用ls或dir 來看, 假如每一行的第一個字母是"d" 的話,表示是一個目錄(directory)。假如是 "-" 的話,表示是一般檔案。例: -rw-r--r-- 1 1244 500 4665 May 29 03:40 00MOTD -rw-r--r-- 1 1244 500 2268 Oct 29 1991 00README drwxr-xr-x 11 1244 500 512 Dec 31 1991 anime.stuff 前兩個是檔案,第三個是目錄。

⊕ pwd

    顯示目前的remote的工作目錄為何。

⊕ binary

    設定傳送模式為binary mode。

⊕ ascii

    設定傳送模式為ascii mode。

⊕ get remote-file [local-file]

    從remote抓檔案到local 上。假如沒指定local-file的話,就用原來的名字。 一次只能抓一個檔。

⊕ put local-file [remote-file]

    把local 的檔案放到remote上。假如沒指定remote-file 的話,就用原來的名 字。一次只能放一個檔。

⊕ mget remote-files

    一次get 多個檔案,按CTRL-C中斷。可用萬用字元"?", "*"。

⊕ mput local-files

    一次put 多個檔案,按CTRL-C中斷。可用萬用字元"?", "*"。

⊕ prompt

    打開或關閉mget、mput時的交談式詢問。在prompt的值為on(預設值)時, mget或mput會一個個檔案問你yes or no 。例: ftp> mget file* mget file

    n mget file.b (y/n)? n mget file.c (y/n)? y 打prompt可把這項功能關掉,對經常使用mget或mput的人很有用。

⊕ hash

    每傳送一定數目的資料(1024 bytes),便印出一個井字號。讓你大致知道,已 經傳送完成多少資料。

⊕ ! [command [args]]

    驚嘆號。執行local 的程式。例: !ls 列出local 的目錄。 !man ftp 線上查看ftp的說明 !cat aaa 看local的一個檔案aaa。 請注意:"!cd"並不能改變local 的目錄,必須用lcd 指令。

⊕ |[command [argument]]

    一直線。將輸出結果管線(pipeline)給local的程式。例: dir |more 列出remote的目錄, 並在每一次換頁時暫停。

⊕ bye

    結束ftp

⊕ chmod、delete、mkdir、rename、rmdir

    用法與UNIX或DOS 指令相近。請各位實際上機或看講師操作,以加深印象。

Sat Feb 5 07:27:13 CST 2011