當遠程主機提供匿名FTP服務時,會指定某些目錄向公衆開放,容許匿名存 取。系統中的其他目錄則處於隱匿狀態。做爲一種安全措施,大多數匿名FTP主機都容許用戶從其下載文件,而不容許用戶向其上傳文件,也就是說,用戶可將匿 名FTP主機上的全部文件所有拷貝到本身的機器上,但不能將本身機器上的任何一個文件拷貝至匿名FTP主機上。即便有些匿名FTP主機確實容許用戶上傳文 件,用戶也只能將文件上傳至某一指定上傳目錄中。隨後,系統管理員會去檢查這些文件,他會將這些文件移至另外一個公共下載目錄中,供其餘用戶下載,利用這種 方式,遠程主機的用戶獲得了保護,避免了有人上傳有問題的文件,如帶病毒的文件。
用戶分類
Real賬戶
這類用戶是指在FTP服務上擁有賬號。當這類用戶登陸FTP服務器的時候,其默認的主目錄就是其賬號命名的目錄。可是,其還能夠變動到其餘目錄中去。如系統的主目錄等等。
Guest用戶
在FTP服務器中,咱們每每會給不一樣的部門或者某個特定的用戶設置一個賬戶。可是,這個帳戶有個特色,就是其只可以訪問本身的主目錄。服務器經過這種方式來保障FTP服務上其餘文件的安全性。這類賬戶,在Vsftpd
軟件中就叫作Guest用戶。擁有這類用戶的賬戶,只可以訪問其主目錄下的目錄,而不得訪問主目錄之外的文件
Anonymous(匿名)用戶
這也是咱們一般所說的匿名訪問。這類用戶是指在FTP服務器中沒有指定賬戶,可是其仍然能夠進行匿名訪問某些公開的資源。
在組建FTP服務器的時候,咱們就須要根據用戶的類型,對用戶進行歸類。 默認狀況下,Vsftpd服務器會把創建的全部賬戶都歸屬爲Real用戶。可是,這每每不符合企業安全的須要。由於這類用戶不只能夠訪問本身的主目錄,而 且,還能夠訪問其餘用戶的目錄。這就給其餘用戶所在的空間帶來必定的安全隱患。因此,企業要根據實際狀況,修改用戶所在的類別。
使用方式
TCP/IP協議中,FTP標準命令TCP
端口號爲21,Port方式數據端口爲20。FTP的任務是從一臺計算機將文件傳送到另外一臺計算機,不受
操做系統的限制。
須要進行遠程文件傳輸的計算機必須安裝和運行ftp客戶程序。在windows操做系統的安裝過程當中,一般都安裝了tcp/ip協議軟件,其中就包含了ftp客戶程序。可是該程序是字符界面而不是圖形界面,這就必須以
命令提示符的方式進行操做,很不方便。
啓動ftp客戶程序工做的另外一途徑是使用ie
瀏覽器,用戶只須要在ie地址欄中輸入以下格式的url地址:ftp:
//[用戶名:口令@]ftp服務器
域名:[
端口號]
(在CMD命令行下也能夠用上述方法鏈接,經過put命令和get命令達到上傳和下載的目的,經過ls命令列出目錄,除了上述方法外還能夠在cmd下輸入ftp回車,而後輸入open IP來創建一個鏈接,此方法還適用於linux下鏈接ftp服務器)
經過ie瀏覽器啓動ftp的方法儘管可使用,可是速度較慢,還會將密碼暴露在ie瀏覽器中而不安全。所以通常都安裝並運行專門的ftp客戶程序。
2.搜索有
文件共享主機或者我的電腦(通常有專門的FTP服務器網站上公佈的,上面有進入該主機或我的電腦的名稱,口令和路徑).
3.當與遠程主機或者對方的我的電腦創建鏈接後,用對方提供的用戶名和口令登錄到該主機或對方的我的電腦。
4.在遠程主機或對方的我的電腦登錄成功後,就能夠上傳你想跟別人分享的東西或者下載別人受權共享的東西(這裏的東西是指能放到電腦裏去又能在顯示屏上看到的東西).
傳輸方式
FTP的傳輸有兩種方式:ASCII、二進制。
ASCII傳輸方式
假定用戶正在拷貝的文件包含的簡單ASCII碼文本,若是在遠程機器上運行的不是UNIX,當文件傳輸時ftp一般會自動地調整文件的內容以便於把文件解釋成另外那臺計算機存儲文本文件的格式。
可是經常有這樣的狀況,用戶正在傳輸的文件包含的不是文本文件,它們多是程序,數據庫,字處理文件或者
壓縮文件。在拷貝任何非文本文件以前,用binary 命令告訴ftp逐字拷貝。
二進制傳輸模式
在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即便目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送
可執行文件到Windows系統,在對方系統上,此文件不能執行。
如在ASCII方式下傳輸
二進制文件,即便不須要也仍會轉譯。這會損壞數據。(ASCII方式通常假設每一字符的第一有效位無心義,由於ASCII字符組合不使用它。若是傳輸二進制文件,全部的位都是重要的。)
支持模式
FTP支持兩種模式:Standard (PORT方式,主動方式),Passive (PASV,被動方式)。
Port模式
FTP
客戶端首 先和服務器的TCP 21端口創建鏈接,用來發送命令,客戶端須要接收數據的時候在這個通道上發送PORT命令。PORT命令包含了客戶端用什麼端口接收數據。在傳送數據的時 候,服務器端經過本身的TCP 20端口鏈接至客戶端的指定端口發送數據。FTP server必須和客戶端創建一個新的鏈接用來傳送數據。
Passive模式
創建控制通道和Standard模式相似,但創建鏈接後發送Pasv命 令。服務器收到Pasv命令後,打開一個臨時端口(端口號大於1023小於65535)而且通知客戶端在這個端口上傳送數據的請求,客戶端鏈接FTP服務 器此端口,而後FTP服務器將經過這個端口傳送數據。
不少
防火牆在 設置的時候都是不容許接受外部發起的鏈接的,因此許多位於防火牆後或內網的FTP服務器不支持PASV模式,由於客戶端沒法穿過防火牆打開FTP服務器的 高端端口;而許多內網的客戶端不能用PORT模式登錄FTP服務器,由於從服務器的TCP 20沒法和內部網絡的客戶端創建一個新的鏈接,形成沒法工做。
命令參數
簡介
1.FTP服務器的登錄
匿名用戶:FTP 口令:FTP
2.顯示文件信息:DIR/LS
3.下載文件:GET 文件名(下載到當前目錄)
4.上傳文件:PUT 文件名
5.多文件下載:MGET
6.多文件上傳:MPUT
7.退出:BYE
8.幫助:HELP
用途
在本地主機和遠程主機之間傳送文件。
語法
ftp [ -d] [ -g ] [ -i ] [ -n ] [ -v] [ -f ] [ -k realm] [-q[-C]][ HostName [ Port ] ]
描述
-C 容許用戶指定:經過 send_file 命令發出的文件必須在網絡高速
緩衝區(NBC)中通過
緩存處理。此標誌必須在指定了-q 標誌的狀況下使用。只有當文件在無保護的狀況下以二進制方式發送時此標誌才適用。
-d 將有關 ftp 命令操做的調試信息發送給 syslogd 守護進程。若是您指定-d 標誌,您必須編輯/etc/syslog.conf 文件並添加下列中的一項:
OR
user.debug FileName
請注意: syslogd 守護進程調試級別包含信息級別消息。
若是不編輯/etc/syslog.conf 文件,則不會產生消息。變動了/etc/syslog.conf 文件以後,請運行 refresh -s syslogd 或 kill -1 SyslogdPID 命令,以通知 syslogd 守護進程其配置文件的變動。關於調試級別的更多信息,請參考/etc/syslog.conf 文件。也請參考 debug 子命令。
-g 禁用文件名中的元字符拓展。解釋元字符可參考爲擴展(有時叫作文件名匹配替換)文件名。請參考 glob 子命令。
-i 關閉多文件傳送中的交互式提示。請參考 prompt、mget、mput 和 mdelete 子命令,以取得多文件傳送中的提示的描述。
-n 防止在起始鏈接中的自動登陸。不然, ftp 命令會搜索$HOME/.netrc 登陸項,該登陸項描述了遠程主機的登陸和初始化過程。請參考 user 子命令。
-q 容許用戶指定: send_file 子例程必須用於在網絡上發送文件。只有當文件在無保護的狀況下以二進制方式發送時此標誌才適用。
-v 顯示遠程服務器的所有響應,並提供數據傳輸的統計信息。當 ftp 命令的輸出是到終端(如控制檯或顯示)時,此顯示方式是缺省方式。
若是 stdin 不是終端,除非用戶調用帶有-v 標誌的 ftp 命令,或發送 verbose 子命令,不然 ftp 詳細方式將禁用。
-f 致使轉發憑證。若是Kerberos 5 不是當前認證方法,則此標誌將被忽略。
-k realm 若是遠程站的域不一樣於本地系統的域,系統將容許用戶指定遠程站的域。所以,域和DCE 單元是同義的。若是Kerberos 5 不是當前認證方法,則此標誌將被忽略。
處理規則
ftp 命令使用「
文件傳送協議」(FTP) 在本地和遠程主機或遠程主機之間傳送文件。
FTP 協議容許在使用不一樣
文件系統的主機之間進行數據傳送。儘管協議在傳送數據中提供了很高的靈活度,它仍然不會嘗試保留特定於某個文件系統的
文件屬性(如文件保護模式或修改時間)。並且,FTP 協議爲文件系統的總體結構作了少量假設,且不提供或不容許諸如循環地複製子目錄這樣的函數。
請注意:若是您正在系統之間傳送文件,且須要保存文件屬性或遞歸地複製子目錄,請使用 rcp 命令。
您能夠在 ftp> 提示符中輸入子命令,執行相似這樣的任務:列出遠程目錄、更改當前的本地和遠程目錄、在單一請求中傳送多個文件、建立和除去目錄,以及轉義到本地 shell 執行 shell 命令。
若是您執行 ftp 命令而不爲遠程主機指定HostName 參數,ftp 命令會當即顯示 ftp> 提示符,等待 ftp 子命令。要鏈接遠程主機,請執行 open 子命令。當 ftp 命令鏈接到遠程主機時,ftp 命令在再次顯示提示符 ftp> 以前會提示輸入登陸名和密碼。若是遠程主機中未定義登陸名的密碼,ftp 命令將不成功。
ftp 命令
解釋器(處理在 ftp> 提示符處輸入的所有子命令),會提供大多數文件傳送程序沒有的性能,如:
* 對 ftp 子命令處理文件名參數
* 從$HOME/.netrc 文件中裝入宏
這些性能會幫助您簡化重複的任務,並容許您在 unattended 方式使用 ftp 命令。
命令解釋器將按照下列規則處理文件名參數:
* 若是爲此參數指定了-(連字符),則標準輸入 (stdin) 將用於讀取操做,而標準輸出用於寫入操做。
* 若是未應用前面的檢查,且文件名擴展已啓用(請參考-g 標誌或 glob 子命令),則解釋器將根據C shell 的規則擴展文件名。啓用了文件名匹配替換以及在期待單一文件名的子命令中使用了模式匹配字符時,結果可能與期待的不同。
例如,append 和 put 子命令將拓展文件名,而後僅使用所生成第一個文件名。其它 ftp 子命令,如 cd、delete, get、mkdir、rename 和 rmdir 不會執行文件名拓展,並從字面上接受模式匹配字符。
* 對於 get、put、mget 和 mput 子命令,解釋器有能力在不一樣的本地和遠程文件名語法樣式之間進行翻譯和映射(請參考 case、ntrans 和 nmap 子命令),而且在本地文件名不是惟一的狀況下有修改它的能力(請參考 runique 子命令)。另外,若是遠程文件名不是惟一的,則 ftp 命令可將指令發送到遠程 ftpd 服務器,以修改遠程的文件名(請參考 sunique 子命令)。
* 使用雙引號(" ") 指定包含空字符的參數。
請注意:ftp 命令解釋器不支持管道。也無需支持全部多
字節字符文件名。
要在互動地運行的時候結束 ftp 會話,請使用 quit 或 bye 子命令或 ftp> 提示符處的End of File (Ctrl-D) 按鍵順序。要在文件傳送未完成以前結束它,請按中斷按鍵順序。其缺省「中斷鍵」序列是Ctrl-C。stty 指令能用於從新定義該鍵系列。
ftp 命令在正常狀況下會當即暫停正在發送(從本地主機到遠端主機)的傳輸。ftp 命令經過將FTP ABOR 指令發送到遠程FTP 服務器,來暫停正在接收的傳輸(從遠程主機到本地主機),並廢棄全部傳入的文件傳送包(直到遠程服務器中止發送它們爲止)。若是遠程服務器不支持ABOR 指令,在遠程服務器未發送全部請求的文件以前,ftp 命令不會顯示 ftp> 提示符。另外,若是遠程服務器執行未指望的操做時,可能須要結束本地 ftp 進程。
登陸認證
若是「標準的」是當前認證方法:
ftp 命令也會經過將密碼發送到遠程主機來處理安全性,並許可自動登陸、文件傳送和註銷操做。
若是您執行 ftp 命令並指定遠程主機的
主機名 (HostName), ftp 命令會嘗試創建一個對於指定主機的鏈接。若是 ftp 命令鏈接成功,ftp 命令會在當前目錄或主目錄中搜索本地的$HOME/.netrc 文件。若是文件存在,ftp 命令會在文件中搜索啓動登陸過程的入口,在命令宏定義中搜索遠程主機。若是$HOME/.netrc 文件或自動登陸項不存在,或是系統已使用 securetcpip 命令保護起來, ftp 命令會提示用戶輸入用戶名和密碼。不論
命令行中是否指定HostName 參數,該指令都會顯示此提示。
請注意:排隊系統不支持多字節主機名。
若是 ftp 命令找到指定主機的$HOME/.netrc 自動登陸項, ftp 會試圖使用該登陸項中的信息登陸遠程主機。ftp 命令也會載入任何在登陸項中定義的命令宏。在某些狀況(例如,所需的密碼在自動登陸項中沒有列出來),ftp 命令會在顯示 ftp> 提示符以前提示輸入密碼。
一旦 ftp 命令完成自動登陸,若是宏是在自動登陸項中定義的,ftp 命令就會執行init 宏。若是init 宏不存在或未包含 quit 或 bye 子命令,ftp 命令將顯示 ftp> 提示符並等待子命令。
請注意:在提示符或在 $HOME/.netrc 文件中指定的遠程主機名必須存在,並擁有在遠程主機中定義的密碼。不然,ftp 指令無效。
若是Kerberos 5 是當前的認證方法:
ftp 命令會按在IETF 草稿文擋"draft-ietf-cat-ftpsec-09.txt" 定義的那樣將此拓展用於 ftp 規範。FTP 安全性擴展將使用「Generic Security Service API (GSSAPI)」安全機制來實現。GSSAPI 提供對於基礎的安全性和通訊機制來講是獨立的服務。GSSAPI 是在 rfc 1508 和1509 中定義的。
ftp 命令將使用AUTH 和ADAT 命令驗證 ftpd
守護進程。若是二者都支持Kerberos 認證,則它們會使用
本地用戶 DCE 憑證驗證遠程系統上的用戶。若是這樣失敗了,且兩個系統中都配置了「標準的」認證,則會使用上述的過程。
HostName 參數是傳送文件的目的地主機名稱。可選的Port 參數指定了端口的
標識符,經過此端口進行傳輸。(/etc/services 文件指定了缺省端口。)
操做命令
下列 ftp 子命令在 ftp> 提示符下輸入。使用雙引號(" ") 指定包含空格字符的參數。
![命令[參數]] 在本地主機上調用交互的 shell。可經過 shell 命令提供帶有一個或多個可選參數的可選命令。
$>Macro [參數] 執行指定的宏(早先使用 macdef 子命令定義的)。參數不被擴展。
?[ 子命令] 顯示描述子命令的幫助消息。若是您不指定Subcommand 參數,ftp 命令將顯示已知子命令的清單。
account [Password] 發送遠程主機在受權對其資源進行訪問以前可能須要的補充密碼。若是密碼不是命令提供的,將提示用戶輸入密碼。密碼不在屏幕上顯示。
append LocalFile [RemoteFile] 將本地文件添加到遠程主機文件中。若是遠程文件名未指定,則將使用本地文件名,該文件名由 ntrans 子命令或 nmap 子命令生成的任何設置進行改變。添加文件的時候, append 子命令將爲 form、mode, struct、和 type 子命令使用當前值。
ascii type ascii 子命令的同義詞。
bell 每一個文件傳送過程完成以後響一聲鈴。
binary type binary 子命令的同義詞。
block mode block 子命令的同義詞。
bye 結束文件傳送會話並退出 ftp 命令。與 quit 子命令相同。
carriage-control form carriage-control 子命令的同義詞。
case 爲文件名 case 設置一個切換。當 case 子命令開啓的時候ftp 命令將所有遠程文件名從大寫改爲小寫(將它們寫入本地目錄時)。其缺省值爲關閉(這樣 ftp 命令就會在本地目錄中按大寫格式寫入大寫的遠程文件名)。
cd RemoteDirectory 將遠程主機中的工做目錄改成指定的目錄。
cdup 將遠程主機中的工做目錄改成當前目錄的父目錄。
close 結束文件傳送會話,但不要退出 ftp 命令。已定義的宏已被擦除。與disconnect 子命令相同。
copylocal 切換本地拷貝。copylocal 缺省值爲關閉。ftp 經過向自身執行 ftp 操做確認您未置零文件(如相同的主機名和相同的路徑名)。將 copylocal 打開繞過這一檢查。
cr 在ASCII 類型文件傳送期間接收記錄時,從回車和 line-feed 序列中除去回車字符。(ftp 命令在文件傳送期間用回車和換行停止每一條 ASCII 類型的記錄。)
遠程主機(其操做系統與正在運行的操做系統不一樣)的記錄可擁有內嵌於記錄中的單一換行。要從記錄定界符中區分這些內嵌的換行,請將 cr 子命令設置爲關閉。cr 子命令會在開啓和關閉中間進行切換。
debug [0 | 1] 在調試記錄保持開啓和關閉之間進行切換。指定 debug 或 debug 1,以打印發送到遠程主機的每個命令,並保存從新啓動的
控制文件。從新指定 debug 或 debug 0,中止調試記錄保持。Ctrl-C 鍵也會保存從新啓動的控制文件。
指定 debug 子命令將有關 ftp 命令操做的調試信息發送給 syslogd 守護進程。若是指定了 debug 子命令,您必須編輯/etc/syslog.conf 文件並添加下列中的其中一項:
請注意: syslogd 守護進程調試級別包含信息級別消息。
若是不編輯/etc/syslog.conf 文件,則不會產生消息。變動了/etc/syslog.conf 文件以後,請運行 refresh -s syslogd 或 kill -1 SyslogdPID 命令,以通知 syslogd 守護進程其配置文件的變動。關於調試級別的更多信息,請參考/etc/syslog.conf 文件。也請參考 ftp -d 標誌。
delete RemoteFile 刪除指定的遠程文件。
dir [RemoteDirectory][LocalFile] 將所指定的遠程目錄的內容清單(RemoteDirectory) 寫入指定的本地文件(LocalFile)。若是RemoteDirectory 參數未指定,dir 子命令將列出當前遠程目錄的內容。若是LocalFile 參數未指定或是一個-(連字符),則 dir 子命令將顯示本地終端上的清單。
disconnect 結束文件傳送會話,但不退出 ftp 命令。已定義的宏已被擦除。與 close 子命令相同。
ebcdic type ebcdic 子命令的同義詞。
exp_cmd 在常規的和試驗性的協議命令中切換。其缺省值爲關閉。
file struct file 子命令的同義詞。
form [ carriage-control | non-print | telnet ] 指定文件傳送的格式。form 子命令修改 type 子命令,以便按指示的格式發送文件傳送。有效的參數爲 carriage-control、non-print 和 telnet。
carriage-control
將文件傳送格式設置爲 carriage-control。
non-print
將文件傳送格式設置爲 non-print。
telnet
將文件傳送格式設置爲 Telnet。Telnet 是打開對系統的鏈接的
傳輸控制協議/網間協議(TCP/IP)。
get RemoteFile [LocalFile] 將遠程文件拷貝到本地主機。若是LocalFile 參數未指定,將在本地使用遠程文件名,並由 case、ntrans 和 nmap 子命令生成的任何設置進行改變。 ftp 命令在傳送文件時,將使用 type、form、mode 和 struct 子命令的當前設置。
glob 切換 mdelete、mget 和 mput 子命令的文件名拓展(文件名匹配替換)。若是文件名匹配替換禁用,這些子命令的文件名參數將不會拓展。啓用了文件名匹配替換以及在期待單一文件名的子命令中使用了模式匹配字符時,結果可能與期待的不同。
例如,append 和 put 子命令將拓展文件名,而後僅使用所生成第一個文件名。其它 ftp 子命令,如 cd、delete, get、mkdir、rename 和 rmdir 不會執行文件名拓展,並從字面上接受模式匹配字符。
mput 子命令的文件名匹配替換在本地執行,其方式與 csh 命令的方式同樣。對於 mdelete 和 mget 子命令,每一個文件名都是在遠程機器上分別地進行擴展的,其清單也不會合並。根據遠程主機和 ftp 服務器的不一樣,目錄名的拓展可與文件名的拓展不同。
要預覽目錄名的擴展請使用 mls 子命令。
mls RemoteFile
要傳送文件的整個目錄子樹,請勿使用 mget 或 mput 子命令,而按二進制格式傳送子樹的 tar 壓縮文檔。
hash 切換散列符號(#) 打印。當 hash 子命令是開啓的時候ftp 命令會爲每一個所傳送的數據塊(1024 字節)顯示一個散列符號。
help [子命令] 顯示幫助信息。請參考? 子命令。
image type image 子命令的同義詞。
lcd [Directory] 更改本地主機中的工做目錄。若是您未指定目錄,ftp 命令將使用主目錄。
local M type local M 子命令的同義詞。
ls [RemoteDirectory] [LocalFile] 請將遠程目錄縮寫的文件清單寫入本地文件。若是RemoteDirectory 參數未指定,ftp 命令將列出當前遠程目錄。若是LocalFile 參數未指定或是一個-(連字符),則 ftp 命令將顯示本地終端上的清單。
macdef Macro 定義子命令宏。隨後直到空行的行(兩個連續的換行)將做爲宏的文本保存。能爲全部宏定義多達16 個宏,包含4096 個字符。在從新定義或執行 close 子命令前,應將宏保持爲已定義的宏。
$(美圓符號)和\ (反斜槓) 是 ftp 宏中的特殊字符。跟隨一個或多個數字的$ 符號將被調用行中對應的宏參數所替換(請參考$ 子命令)。$ 符號後緊隨字母 i 表示將要循環該宏,$i 字符組合將被每一傳遞中連續的字符替換。
第一個參數用於第一個傳遞,第二個參數用於第二個傳遞,依此類推。\ 符號會防止下一個字符的特殊處理。請使用\ 符號關閉$ 和\.(反斜槓句點)符號的特殊意義。
mdelete RemoteFiles 擴展在遠程主機上RemoteFiles 參數所指定的文件,並刪除遠程文件。
mdir [RemoteDirectories LocalFile] 擴展在遠程主機上RemoteDirectories 參數所指定的目錄,並將這些目錄的內容清單寫入在LocalFile 參數中定義的文件。若是RemoteDirectories 參數包含模式匹配字符,mdir 子命令將提示輸入本地文件(若是沒指定)。若是RemoteDirectories 參數是用空格隔開的遠程目錄清單,則清單中最後一個參數必須是一個本地文件名或-(連字符)。
若是 LocalFile 參數是-(連字符),mdir 子命令將顯示本地終端上的清單。若是交互式提示啓用(請參考 prompt 子命令),ftp 命令將提示用戶驗證最後一個參數是本地文件且不是遠程目錄。
mget RemoteFiles 請擴展在遠程主機上RemoteFiles 參數,並將指示的遠程文件拷貝到本地主機的當前目錄中。請參考 glob 子命令,取得更多有關文件名擴展的信息。遠程文件名在本地使用,並由 case、ntrans 和 nmap 子命令所生成的設置進行變動。在傳送文件時,ftp 命令將使用 form、mode、struct 和 type 子命令的當前設置。
mkdir [RemoteDirectory] 建立在RemoteDirectory 參數(遠程主機中)中指定的目錄。
mls [RemoteDirectories LocalFile] 擴展在遠程主機上在RemoteDirectories 參數中指定的目錄,並將所指示的遠程目錄的縮寫文件清單寫入本地文件。若是RemoteDirectories 參數包含模式匹配字符,mls 子命令將提示輸入本地文件(若是沒指定)。若是RemoteDirectories 參數是用空格隔開的遠程目錄清單,則清單中最後一個參數應是一個本地文件名或-(連字符)。
若是 LocalFile 參數是-(連字符),mls 子命令將顯示本地終端上的清單。若是交互式提示啓用(請參考 prompt 子命令),ftp 命令將提示用戶驗證最後一個參數是本地文件且不是遠程目錄。
mode [ stream | block ] 設置文件傳送方式。若是參數未提供,則缺省值爲 stream。
block
請將文件傳送方式設置爲 block。
stream
將文件傳送方式設置爲 stream。
modtime 顯示遠程機器中所指定文件的最後修改時間。若是 ftp 命令未鏈接到執行前的主機,則 modtime 子命令將帶錯誤消息而終止。ftp 命令忽略第一個參數之外的參數。若是FileName 參數未指定,ftp 命令將提示輸入文件名。若是未給出文件名,ftp 命令將把用法消息發送給標準輸出,並終止該子命令。
若是遠程主機中有FileName 參數指定的名稱,且該名稱指定一個文件,則 ftp 命令將包含文件最後修改時間的消息發送給標準輸出,並終止該子命令。若是FileName 指定一個目錄,則 ftp 命令將把錯誤消息發送給標準輸出,並終止該子命令。
注意: modtime 子命令在容許的時候會解釋元字符。
mput [LocalFiles] 擴展在主機的LocalFiles 參數中指定的文件,並將指示的本地文件複製給遠程主機。請參考 glob 子命令,取得更多有關文件名擴展的信息。本地文件名在遠程主機中使用,並由 ntrans 和 nmap 子命令所生成的設置進行變動。 ftp 命令會在傳送文件時,使用 type、form、mode 和 struct 子命令的當前設置。
nlist [RemoteDirectory][LocalFile] 將所指定的遠程目錄的內容清單(RemoteDirectory) 寫入指定的本地文件(LocalFile)。若是RemoteDirectory 參數未指定,nlist 子命令將列出當前遠程目錄的內容。若是LocalFile 參數未指定或是一個-(連字符),則 nlist 子命令將顯示本地終端上的清單。
nmap 打開或關閉文件名映射機制。若是未指定任何參數,文件名映射將關閉。若是參數已指定,在沒有指定目標文件名的時候,將爲 mget 和 mput 子命令以及 get 和 put 子命令映射源文件名。此子命令在本地和遠程主機使用不一樣的文件命名約定和慣例時頗有用。映射下列由InPattern 和OutPattern 參數設置的模式。
InPattern 參數爲傳入的文件名指定了模板,該文件名有可能已根據 case 和 ntrans 設置處理過。可將從$1 到$9 的模板變量包含進InPattern 參數。除$(美圓符號)和 \$ (反斜槓,美圓符號)之外,InPattern 參數中的全部字符,都是按字面意義處理的,並用做InPattern 變量之間的定界符。例如,若是InPattern 參數是$1.$2 且遠程文件名是 mydata.dat,則$1 的值是 mydata,$2 的值是 dat。
此OutPattern 參數肯定結果文件名。從$1 到$9 的變量將被它們從InPattern 參數得到的值替換,而變量$0 將由原文件名替換。另外,若是Sequence1 不爲空,序列[Sequence1,Sequence2] 將由Sequence1 替換;不然它將由Sequence2 的值替換。例如,子命令:
nmap $1.$2.$3 [$1,$2].[$2,file]
會從 myfile.data 或 myfile.data.old 中產生 myfile.data,從 myfile 中產生 myfile.file,從。myfile中產生myfile.myfile。請使用 \ (反斜槓) 符號防止OutPattern參數中 $(美圓符號)、[(左括號)、](右括號)和,(逗號)的特殊意義。
non-print form non-print 子命令的同義詞。
ntrans ] 打開或關閉文件名字符翻譯機制。若是未指定任何參數,字符翻譯將關閉。若是參數已指定,在沒有指定目標文件名的時候,將爲 mget 和 mput 子命令以及 get 和 put 子命令翻譯源文件名中的字符。
此子命令在本地和遠程主機使用不一樣的文件名約定和慣例時頗有用。字符翻譯聽從InCharacters 和OutCharacters 參數設置的模式。匹配InCharacters 參數中字符的源文件名中的字符將由OutCharacters 參數中對應的字符替換。
若是InCharacters 參數指定的字符串比OutCharacters 參數指定的字符串長,並且其在OutCharacters 參數中無對應的字符,則InCharacters 參數中的字符將被刪除。
open HostName [Port] 在由HostName 參數所指定主機中創建對FTP 服務器的鏈接。若是可選的端口號已指定ftp 命令將嘗試鏈接該端口中的服務器。若是已設置自動登陸功能(即,該-n 標誌沒有在命令行中指定), 則 ftp 命令就會試圖讓用戶登陸到FTP 服務器。
您還必須擁有其中帶有正確信息的$HOME/.netrc 文件和正確的許可集。。netrc 文件應在您的主目錄中。
passive 切換文件傳送的被動方式。在被動方式關閉的狀況下調用文件傳送命令(如 get、mget 和 put,或 mput)時,ftp 服務器就會打開對客戶機的數據鏈接。在被動方式下,客戶機在發送和接收數據的時候打開對主機的數據鏈接。
private 請將保護級別設置爲「private」。在此級別,數據的保護既完整而又機密。
prompt 切換交互式提示。若是交互式提示啓用(缺省值)ftp 命令在檢索、發送或
刪除文件(在 mget、mput, 和 mdelete)以前會提示進行驗證操做。不然,ftp 命令會根據全部指定的文件來執行。
protect 此指令會返回保護的當前級別。
proxy [ 子命令] 在輔助控制鏈接中執行 ftp 命令。此子命令容許 ftp 子命令同時鏈接兩個遠程FTP 服務器,以便在兩個服務器之間傳送文件。第一個 proxy 子命令應是創建次要控制鏈接的 open 子命令。請輸入 proxy ? 子命令,查看其它在二級鏈接中可執行的 ftp 子命令。
下列子命令在由 proxy 子命令開頭時的表現會不同:
* open 子命令在自動登陸過程當中不定義新的宏。
* close 子命令不會擦除現存的宏定義。
* get 和 mget 子命令從主鏈接中的主機上將文件傳送到二級鏈接的主機上。
* put、 mput 和 append 子命令從第二鏈接中的主機上將文件傳送到主鏈接的主機上。
* restart 子命令可由 proxy 命令進行處理。
* status 子命令顯示出準確的信息。
文件傳送要求第二鏈接上的FTP 服務器必須支持PASV(passive)指令。
put LocalFile [RemoteFile] 將本地文件存儲到遠程主機中。若是您未指定RemoteFile 參數,ftp 命令將使用本地文件名命名遠程文件,而遠程文件名由 ntrans 和 nmap 子命令所生成的設置加以改變。 ftp 命令會在傳送文件時,將使用 type、form、mode 和 struct 子命令的當前設置。
pwd 顯示遠程主機中的當前目錄名。
quit 關閉鏈接並退出 ftp 命令。與 bye 子命令相同。
quote 字符串逐字地將由 String 參數指定的字符串發送到遠程主機。執行remotehelp 或 quote help 子命令,顯示String 參數的有效值清單。
注意:涉及數據傳輸的「Quoting」命令會產生不可預見的結果。
record struct record 子命令的同義詞。
recv RemoteFile [LocalFile] 請將遠程文件拷貝到本地主機。與 get 子命令相同。
reinitialize 經過刷新全部I/O 並容許完成傳輸操做來對FTP 會話進行從新初始化。按照用戶已開始FTP 會話但未登陸到遠程主機的狀況復位全部缺省值。
remotehelp [Subcommand] 請求從遠程FTP 服務器得到幫助。
rename FromName ToName 從新命名遠程主機上的文件。
reset 清除回覆隊列。此子命令將使命令分析從新同步。
restart get | put | append 請在生成上一個檢查點的位置從新啓動文件傳送。要想順利運行,該子命令應與異常終止子命令相同,包括結構、類型和格式。有效參數爲 get、put 和 append。
rmdir RemoteDirectory 除去由遠程主機中的RemoteDirectory 參數所指定的遠程目錄。
runique (ReceiveUnique) 在子命令 get 和 mget 期間,切換爲本地目的文件建立惟一文件名稱的功能。若是此功能爲「關閉」狀態(預設值),ftp 命令會覆蓋本地文件。不然,若是本地文件名與爲本地目的文件指定的名稱相同,ftp 將使用.1 修改成本地目的文件指定的名稱。若是本地文件已使用了新名稱,ftp 將把後綴。2 添加給所指定的名稱。若是本地文件已使用了此第二個名稱,則 ftp 命令會在找到惟一的文件名或未找到惟一文件名但到達.99 以前繼續增長後綴。若是 ftp 命令找不到惟一的文件名,ftp 會報告錯誤,傳輸過程也不會發生。請注意 runique 子命令不會影響從 shell 命令產生的本地文件名。
safe 將保護級別設置爲「safe」。在此級別,數據的完整性會獲得保護。
send LocalFile [RemoteFile] 將本地文件存儲到遠程主機中。其方式與 put 子命令相同。
sendport 切換對於FTP PORT 指令的使用。根據預設,ftp 命令在爲每一個數據傳輸創建鏈接的時候會使用PORT 指令。當禁用PORT 指令時,ftp 不會在數據傳輸中使用PORT 命令。PORT 指令在處理某些FTP 服務器時頗有用,那些服務器在未正確指示指令已被接受時會忽略PORT 指令。
site Args 使用 chmod 命令顯示或設置空閒超時週期、顯示或設置文件建立 umask 或更改文件的許可權。Args 參數可能的值是 umask 和 chmod。
size RemoteFile 以字節的方式顯示RemoteFile 參數所指定的遠程文件的大小。
status 顯示 ftp 命令的當前狀態以及子命令的狀態。
stream mode stream 子命令的同義詞。
struct [ file | record ] 設置數據傳送結構類型。有效的參數爲 file 和 record。
file
將數據傳送結構類型設置爲 file。
record
將數據傳送結構類型設置爲 record。
sunique (Send/Store Unique) 在子命令 put 和 mput 期間,切換爲遠程目的文件建立惟一文件名稱的功能。若是此功能爲「關閉」狀態(預設值),ftp 命令會覆蓋遠程文件。不然,若是遠程文件名與爲遠程目的文件指定的名稱相同,遠程FTP 服務器會修改遠程目的文件的名稱。請注意遠程服務器必須支持STOU 指令。
系統顯示在遠程機器上運行的操做系統類型。
telnet form telnet 子命令的同義詞。
tenex type tenex 子命令的同義詞。
跟蹤切換包跟蹤。
type [ ascii | binary | ebcdic | image | local M | tenex ] 設置文件傳送類型。有效參數是 ascii、binary、ebcdic、image,、local M 和 tenex。若是參數未指定,則當前類型被顯示。缺省類型爲 ascii;binary 類型可能會比 ascii 更有效。
ascii
將文件傳送類型設置爲網絡ASCII。此類型爲缺省值。文件傳送使用二進制映像傳送可能會更有效。請參考 binary 參數,以取得更多信息。
binary
文件傳送類型設置爲二進制映像。此類型可能比 ASCII 傳送更有效。
ebcdic
將文件傳送類型設置爲 EBCDIC。
image
將文件傳送類型設置爲二進制映像。此類型可能比 ASCII 傳送更有效。
local M
將文件傳送類型設置爲本地。M 參數定義每計算機字位的
十進制數。此參數沒有缺省值。
tenex
將文件傳送類型設置爲 TENEX 機器須要的類型。
user User [Password] [Account] 識別遠程FTP 服務器的本地用戶(User)。若是未指定Password 或Account 參數,而遠程服務器須要它,則 ftp 命令會提示輸入本地的密碼和賬戶。若是Account 參數是必須的,則 ftp 命令會在
遠程登陸過程完成後將它發送到遠程服務器。
注意:除非經過在命令行上指定 -n 標誌來禁用自動登陸,不然 ftp 命令將User、Password和 Account 參數自動地發送給遠程服務器用於初始鏈接。您亦需主目錄中的。netrc 文件以便發佈自動登陸。
verbose 切換詳細方式。若是詳細方式啓用(缺省值),ftp 命令將顯示遠程FTP 服務器的所有響應。另外, ftp 會在傳輸完成後顯示全部文件傳送的統計信息。
命令實例
1. 要調用 ftp 命令,請登陸 canopus 系統,顯示本地幫助信息,顯示遠程幫助信息,顯示狀態,切換 bell、prompt、runique、trace 和 verbose 子命令,而後再退出,請輸入:
$ ftp canopus
名稱(canopus:eric):dee
331 dee 所須要的密碼。
密碼:
230 用戶 dee 登陸。
ftp> 幫助
Commands 可能爲縮寫。命令:
! delete mdelete proxy runique
$ debug mdir sendport send
account dir mget put size
append disconnect mkdir pwd status
ascii form mls quit struct
bell get mode quote sunique
binary glob modtime recv system
bye hash mput remotehelp tenex
case help nmap rstatus trace
cd image nlist rhelp type
cdup lcd ntrans rename user
close ls open reset verbose
cr macdef prompt rmdir ?
clear private protect safe
ftp> remotehelp
214 —識別下列命令(* => 未實施)。
USER PORT RETR MSND* ALLO DELE SITE* XMKD CDUP
PASS PASV STOR MSOM* REST* CWD STAT* RMD XCUP
ACCT* TYPE APPE MSAM* RNFR XCWD HELP XRMD STOU
REIN* STRU MLFL* MRSQ* RNTO LIST NOOP PWD
QUIT MODE MAIL* MRCP* ABOR NLST MKD XPWD
AUTH ADAT PROT PBSZ MIC ENC CCC
無代理鏈接。
方式:流;類型:ascii;
表單:非打印的;結構:文件
詳細:開; Bell:關; 提示:開;文件名匹配替換: 開
存儲惟一:關; 接收惟一:關
Case:關; CR stripping:開
Ntrans: 關
Nmap:關
散列標記打印:關;PORT cmds 的使用:開
ftp> bell
Bell 方式開啓
ftp> 提示符
交互方式關閉。
ftp> runique
接收惟一開啓。
ftp> trace
包跟蹤開啓。
ftp> verbose
詳細方式關閉。
ftp> quit
$
2. 要調用 ftp 命令,請登陸 canopus 系統,打印工做目錄,更改工做目錄,將文件傳送類型設定爲ASCII 向遠程主機發送本地文件,將工做目錄改成父目錄,而後退出,請輸入:
$ ftp canopus
名稱(canopus:eric):dee
331 dee 所須要的密碼。
密碼:
230 用戶 dee 登入。
ftp> pwd
257 "/home/dee" 爲當前目錄。
250 CWD 命令順利完成。
ftp> 類型 ascii
200 類型設置爲A。
ftp> 發送 typescript
200 PORT 命令順利完成。
150 爲 typescript (128.114.4.99,1412) 打開數據鏈接。
226 傳輸完成。
ftp> cdup
250 CWD 命令順利完成。
ftp> bye
221 再見。$
3. 要調用具備自動登陸功能的 ftp 命令(使用。netrc 文件),請打開與 canopus 系統的會話,登入,將工做目錄改成父目錄,顯示工做目錄,列出當前目錄的內容,刪除文件,將當前目錄的內容清單寫入本地文件,關閉會話,而後退出,請輸入:
$ ftp canopus
331 dee 所須要的密碼。
230 用戶 dee 登入。
ftp> cdup
250 CWD 命令順利完成。
ftp> pwd
257 "/home" 是當前目錄。
ftp> dir
200 PORT 命令順利完成。
150 爲/usr/bin/ls (128.114.4.99,1407) 打開數據鏈接。
(0 字節)。
一共104
drwxr-xr-x 2 system 32 Feb 23 17:55 bin
Drwxr-xr-x 26 rios 4000 May 30 17:18 bin1
drwxr-xr-x 2 system 32 Feb 23 17:55 books
drwxrwxrwx 18 rios 1152 Jun 5 13:41 dee
-r--r--r-- 1 system 9452 May 17 12:21 filesystems
drwxr-xr-x 2 system 32 Feb 23 17:55 jim
drwxr-xr-x 5 system 80 Feb 23 17:55 krs
drwxrwxrwx 2 rios 16432 Feb 23 17:36 lost+found
-rwxr-xr-x 1 rios 3651 May 24 16:45 oldmail
drwxr-xr-x 2 system 256 Feb 23 17:55 pubserv
drwxrwxrwx 2 system 144 Feb 23 17:55 rein989
drwxr-xr-x 2 system 112 Feb 23 17:55 reinstall
226 傳輸完成。
ftp> 刪除舊郵件。
250 DELE 命令順利完成。
ftp> mdir /home/dee/bin binlist
output to local-file: binlist? y
200 PORT 命令順利完成。
150 爲/usr/bin/ls (128.114.4.99,1408)(0 字節)打開數據鏈接。
226 傳輸完成。
ftp> close
221 再見。
ftp> quit
$
文件
/usr/samples/tcpip/netrc 包含。netrc 樣本文件。
/etc/syslog.conf 包含 syslogd 守護進程的配置信息
傳輸協議
FTP是一個8位的客戶端-服務器協議,能操做任何類型的文件而不須要進一步處理,就像MIME或Unicode同樣。可是,FTP有着極高的延時,這意味着,從開始請求到第一次接收需求數據之間的時間,會很是長;而且不時的必須執行一些冗長的登錄進程。
來源於:百度百科