ftp 客戶端和命令使用
有關FTP(客戶端,伺服器搭建這裡不講)有很多,大體分為命令列和GUI圖形介面的軟體。
一、圖形介面的有
Filezilla (只有windows下的服務端,客戶端有其他平臺版本)
對中文支援好
gftp(gnome下ftp客戶端)
crossftp
基於Java的穩定ftp客戶端和同步工具。優良的中文/Unicode支援。
Kftpgrabber
KDE下ftp客戶端,支援編碼選擇。對中文支援較好
krusader
除了上面的客戶端,也可以通過瀏覽器或者在對應平臺檔案系統中輸入ftp://ip 使用去訪問ftp服務端
如果有喜歡的可以通過apt-get 或者 aptitude 安裝。
二 、CLI(命令列客戶端)
(1)ftp
1. 連線ftp伺服器
格式:ftp [hostname| ip-address]
a)在linux命令列下輸入:ftp 10.18.34.115
b)伺服器詢問你使用者名稱和口令,分別輸入yint和相應密碼,待認證通過即可。
或者用下面的格式
ftp - -i -n IP_ADDRESS
user USERNAME PASSWORD
比如:
ftp -i -n 172.17.17.17
user PUB 123456
也可以自己寫個指令碼自動登入。
[email protected]:~/桌面/shell$ cat ftp.sh
#!/bin/sh
ftp -i -n 172.17.17.17
<< !
user PUB 123456
!
這樣就可以自動登入了。
2. 下載檔案
下載檔案通常用get和mget這兩條命令。
a) get
格式:get [remote-file] [local-file]
將檔案從遠端主機中傳送至本地主機中.
如要獲取伺服器上E:/rose/1.bmp,則
ftp> get /rose/1.bmp 1.bmp (回車)
b) mget
格式:mget [remote-files]
從遠端主機接收一批檔案至本地主機.
如要獲取伺服器上E:/rose/下的所有檔案,則
ftp> cd /rose
ftp> mget *.* (回車)
注意:檔案都下載到了linux主機的當前目錄下。比如,在 /root/yint下執行的ftp命令,則檔案都下載到了/root/yint下。
3.上傳檔案
a) put
格式:put local-file [remote-file]
將本地一個檔案傳送至遠端主機中.
如要把本地的1.bmp傳送到遠端主機E:/rose,並改名為333.bmp
ftp> put 1.bmp /rose/333.bmp (回車)
b) mput
格式:mput local-files
將本地主機中一批檔案傳送至遠端主機.
如要把本地當前目錄下所有bmp檔案上傳到伺服器E:/rose 下
ftp> cd /rose (回車)
ftp> mput *.bmp (回車)
注意:上傳檔案都來自於主機的當前目錄下。比如,在 /root/yint下執行的ftp命令,則只有在/root/yint下的檔案linux才會上傳到伺服器E:/rose 下。
4. 斷開連線
bye:中斷與伺服器的連線。
ftp> bye (回車)
(2)lftp
在用lftp訪問國內一些ftp伺服器時,往往看到的中文是亂碼,這是由於伺服器和本地編碼不一致造成的。
解決辦法:
在主目錄下新建一個檔案~/.lftprc或者~/.lftp/rc
比如我在終端中輸入:
gedit ~/.lftprc #在當前目錄下建立.lftprc檔案
然後在彈出的對話方塊中輸入以下內容:
debug 3
set ftp:charset GBK
set file:charset UTF-8
#set ftp:passtive-mode no
#alias utf8 " set ftp:charset UTF-8"
#alias gbk " set ftp:charset GBK"
上面的這幾行的意思是
設定本地和ftp伺服器的編碼方式
alias 是使用別名命令
如果對於經常使用不同編碼的 ftp server 的朋友,或經常使用不同的選項的,可以設定一些別名,這樣會方便很多。比如:
我經常訪問 gbk 編碼的 ftp, 還有 utf8 編碼的,那麼我在 ~/.lftp 中這樣寫
程式碼:
alias gbk set ftp:charset gbk; set file:charset UTF-8alias utf8 set ftp:charset UTF-8; set file:charset UTF-8
那麼當我訪問一個 utf8 站點的時候,如果發現亂碼,只要在 lftp 的命令提示符號下面輸入 utf8 就可以將編碼調整正常。同理,如果訪問 gbk 的發現亂碼就輸入 gbk, 馬上正常。
下面講解如何使用lftp
1、登入ftp
程式碼:
lftp 使用者名稱:密碼@ftp地址:傳送埠(預設21)
也可以先不帶使用者名稱登入,然後在介面介面下用login命令來用指定賬號登入,密碼不顯示。
lftp [email protected]:port
口令:
然後就進入了。(這裡輸入的口令是密碼,linux下密碼不顯示)
2、檢視檔案與改變目錄
程式碼:
lscd 對應ftp目錄
在lftp終端中,前面帶一個l的命令例如lcd,指的是local,就是在本機的操作,而對應的沒有這個l的,都是對ftp site的操作。還有就是要執行本地終端命令,也可以用前面帶一個!的方式。這樣,配合起來,終端,本地的操作都很放遍。例如,檢視ftp上所有的以mp3為副檔名的檔案:
程式碼:
find . -name "*.mp3"
程式碼:
lftp [email protected]:/> lcd
lcd 成功, 本地目錄=/home/cyq
lftp [email protected]:/>
3、下載get當然是可以的,還可以
程式碼:
mget -c *.pdf
把所有的pdf檔案以允許斷點續傳的方式下載。m代表multi
程式碼:
mirror aaa/
將aaa目錄整個的下載下來,子目錄也會自動複製
程式碼:
pget -c -n 10 file.dat
以最多10個執行緒以允許斷點續傳的方式下載file.dat可以通過設定pget:default-n的值而使用預設值。
4、上傳同樣的put,mput,都是對檔案的操作,和下載類似。
程式碼:
mirror -R 本地目錄名
將本地目錄以迭代(包括子目錄)的方式反向上傳到ftp site。
5、模式設定。
程式碼:
set ftp:charset gbk
遠端ftp site用gbk編碼,對應的要設定為utf8,只要替換gbk為utf8即可。
程式碼:
set file:charset utf8
本地的charset設定為utf8,如果你是gbk,相應改掉。
程式碼:
set ftp:passive-mode 1
使用被動模式登入,有些site要求必須用被動模式或者主動模式才可以登入,這個開關就是設定這個的。0代表不用被動模式。
6、書籤其實命令列也可以有書籤,在lftp終端提示符下:
程式碼:
bookmark add ustc
就可以把當前正在瀏覽的ftp site用ustc作為標籤儲存起來。以後在shell終端下,直接
程式碼:
lftp ustc
就可以自動填好使用者名稱,密碼,進入對應的目錄了。
程式碼:
bookmark edit
會呼叫編輯器手動修改書籤。當然,也可以看到,這個書籤其實就是個簡單的文字檔案。密碼,使用者名稱都可以看到。
7、配置檔案 /etc/lftp.conf 一般,我會新增這幾行:
引用:
set ftp:charset gbkset file:charset utf8set pget:default-n 5
這樣,就不用每次進入都要打命令了。其他的set 可以自己tab然後help 來看。
下面是常用命令
ls
顯示遠端檔案列表(ils 顯示本地檔案列表)。# l 的意思就是local ils比較特殊
cd
切換遠端目錄(lcd 切換本地目錄)。
get
下載遠端檔案。
mget
下載遠端檔案(可以用萬用字元也就是 *)。
pget
使用多個執行緒來下載遠端檔案, 預設為五個。
mirror
下載/上傳(mirror -R)/同步 整個目錄。
put
上傳檔案。
mput
上傳多個檔案(支援萬用字元)。
mv
移動遠端檔案(遠端檔案改名)。
rm
刪除遠端檔案。
引數-r,遞迴刪除資料夾
mrm
刪除多個遠端檔案(支援萬用字元)。
mkdir
建立遠端目錄。
rmdir
刪除遠端目錄。
pwd
顯示目前遠端所在目錄(lpwd 顯示本地目錄)。
du
計算遠端目錄的大小
set net:limit-rate 10000,10000
限制上傳下載各為10KB/s
set ftp:charset gbk
設定遠端ftp site用gbk編碼
!
執行本地 shell的命令(由於lftp 沒有 lls, 故可用 !ls 來替代)
lcd
切換本地目錄
lpwd
顯示本地目錄
alias
定義別名
bookmark
設定書籤。
exit
退出ftp