【整理】Linux FTP用戶端 Lftp 使用方法

來源:互聯網
上載者:User

1. 一氣呵成式
$ lftp (ftp://)user:password@site:port
比較常用於網頁或bbs上給出的現成連結,缺點是password顯示為明文,推薦在月黑風高、四下無人的環境裡偷偷輸入...如果不幸背後有人
$ lftp (ftp://)user@site:port
然後系統會提示輸入password,這是就是******了

2. 老實巴交型

$ lftp site -p port -u user,password
這是lftp說明文檔裡給出的標準方式,這一招比較費體力,請根據自己身體情況量力而行。如果體能一般,可以
$ lftp site:port -u user,password
似乎是略微省事一點兒,我一般也用這種方法

3. 五短之中暗藏一長

這是一個遞迴嵌套的招式%¥#@!×&
$ lftp
lftp:~>lftp user:password@site:port
就是說在lftp控制台裡進行操作,和在系統終端是完全一樣的,你仍然可以毫無顧忌地用使用前面兩招,同時也可以用o或open代替lftp,後面網站使用者名稱密碼的格式也可以根據自己偏好輸入

4. 終極大招

每次登入都狂敲一行user:password@site:port,長年累月,就算李鐵來了也扛不住。所以還是要讓lftp把常用的網站記下來,就象FlashFXP裡的月台管理器,在lftp裡,叫做bookmark,具體的咱們日後再說

登 錄完成第一件事就是想看看這個伺服器上有什麼好東東。操作和終端裡是一樣的,ls就是列出伺服器目錄。有一點要說明,第一次ls之後,目錄表就被儲存到了 本地cache,這樣再次ls就不能得到這個目錄下最新的列表,這時可以用rels重新下載目錄表。這裡的cache是lftp的預設設定,目的無非就是 更快的得到列表,有時卻不符和你的使用習慣。可以用 cache on和cache off開關cache,也可以用cache flush來清空cache。更改目錄也是cd,沒什麼可說的,lftp也支援tab匹配功能,大大減少了勞動強度。

lftp 支援了六種模式, ftp, ftps, http, https, hftp, fish and file(當然了 https 和 ftps 的支援必須在編譯就和 openssl library 一起編譯好)。

lftp 內建了 shell-like 的命令格式, 允許在背景同時執行多個命令(&)。所有背景執行的工作都是在同一個程式中(process), 能將前景執行的命令放到背景執行(Ctrl-z), 或從背景拿回前景執行(wait 或 fg), 甚至還可以經由上個命令的傳回值來決定目前這個命令是否要執行(&& ||)。

在結束 lftp 時, 如果還有程式執行中, lftp 會將自己切換到 no hup 模式並放到背景執行。因此不必擔心執行 lftp 當中無法登出。

!
可執行本地端 shell 中的命令, 如 !ls /usr/local/bin/由於 lftp 並沒有 lls(顯示本地端檔案列表的指令), 故可用 !ls 來替代。

alias []
定義別名
alias less more
alias reconnect "close; cd ."
直接輸入 alias 即可看到目前定義了那些別名。如果只輸入 alias name 的話, 則是取消 name 這個別名。

bookmark SUBCMD
設定書籤, 可將目前月台及所在目錄設成書籤, 下次可直接進來, 不用再 cd 來 cd 去的

bookmark add name 用來新增名稱為 name 的書籤
bookmark del name 刪除名稱為 name 的書籤
bookmark list 顯示目前有設定那些書籤(另外直接打 bookmark 和 bookmark list 的結果一樣)
bookmark edit 呼叫編輯器修改書籤 (~/.lftp/bookmarks)

cd 切換遠端目錄

cache SUBCMD
管理 lftp 的 cache

rels []
從 cache 中顯示遠端檔案列表
rels 則不會從 cache 中讀取

recls opts [path/]pattern
從 cache 中顯示遠端的檔案列表, 應該算是 ls 的加強版, 有很多參數可用,應該是可用來產生各種不同>的檔案列表以供其他程式使用。
recls 則不會從 cache 中讀取

du options
計算遠端整個目錄佔用容量

get OPTS -o
抓取遠端檔案

get rfile -o lfile
抓 rfile 到本地改名為 lfile
-c 為續傳
-E 抓檔完成後, 將遠端的檔案砍了
-a 為 ascii mode, 預設為 binary mode
-O 設定 base directory 為本地端放檔案的目錄

mget OPTS
下載遠端檔案(可用 wildcard expansion 也就是 *)

pget OPTS -o
使用多個連結來下載檔案, 預設為五個。
-n 3 為三個連結

jobs -v
顯示目前有那些程式在背景執行
-v 顯示詳細的資訊(-v 可多加幾個來顯示更詳細的資訊)

lcd
切換本地端的目錄

mirror OPTS remote [local]
下載整個目錄(樓上的 get 只能用來抓檔案)
-c 續傳
-e 這個要小心一些, 比較遠端和本地端的檔案, 假如遠端沒有的, 就將本地端的檔案刪除, 也就是將本地端和遠端資料同步。
-R 上傳整個目錄
-n 只下載較新的檔案
-r 不用遞迴到目錄中
--parallel=n 同時下載 n 個檔案(預設一次只下載一個)

module name args
載入模組

put OPTS -o
上傳檔案

mput OPTS
上傳檔案(可用 wildcard expansion 也就是 *)

mv
將遠端的 file1 改名為 file2

mrm
用 wildcard expansion 方式來刪除遠端檔案

open OPTS
開啟某個月台
open -u , -p site

queue OPTS []
將 cmd 放到佇列中等待執行
-d index 將編號為 index 的 job 刪除
-m index new_index 將編號為 index 的 job 移至編號 new_index, 插隊專用。
-n index 在編號 index 之前新增一個 job

wait []
將背景執行中的程式移至前景(也可用 fg)

kill all|
刪除全部的 jobs 或 job_no

repeat delay command
每隔 delay 秒, 重覆執行 command, 預設是每隔一秒

rm -r -f
移除遠端檔案

mkdir -p
建立遠端目錄

rmdir -f
移除遠端目錄

set OPT []
設定變數
直接鍵入 set 可看目前定義了那些變數

source
讀取 file, 並執行 file 中的命令(應該是和 bash 中的 source 命令是一樣的吧)

debug [|off] -o
設定 debug level 為 level
-o 將輸出導向至 file

exit [|bg]
結束 lftp
此時若還有 jobs, 則會將 lftp 放至背景執行, 繼續未完成的工作

history -w file-r file-c|-l cnt
和 bash 中的 history 功能一樣

renlist []
只顯示遠端的檔名

pwd -p
顯示目前遠端所在目錄
-p 連登入密碼也顯示

scache []
只打 scache 顯示目前所有的 session, 加上 session_no 可切換至其他的 session,
對於同時開啟多個月台或同個月台不同目錄間切換。

小 弟有遇過某些月台, 一個 ip 只允許登入一次的,如果想同時抓好幾個檔案在不同目錄下,就只能一次抓一個,等到抓完了才能再切換到別的目錄去抓第二個, 這時 lftp 的 queue 就派上用場了。一般下了 get, mget 的話, 檔案就直接開始下載了, 這時就無法再切換到其他目錄了, 因此, 先將 queue 給停止, 首先下個 queue, 按 enter, 再下個 jobs 即可看到目前 queue 是停止的。這時再將要抓的東東一個個加入 queue 中, 等到要抓的東東都進入 
queue 後, 再下 queue start 一次全部傳送, 這樣子可省去隨時注意檔案是否抓完,迼成困擾。

lftp localhost:/pub/Iso> queue

lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Queue is stopped.

lftp localhost:/pub/Iso> queue get rettcd.iso

lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Queue is stopped.
Commands queued:
1. get rettcd.iso

lftp localhost:/pub/Iso> queue mirror Linux/

lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Queue is stopped.
Commands queued:
1. get rettcd.iso
2. mirror Linux/

lftp localhost:/pub/Iso> queue start

lftp localhost:/pub/Iso> jobs
0 queue (ftp://localhost)
Now executing: 1 get rettcd.iso
Commands queued:
1. mirror Linux/
1 get rettcd.iso
`rettcd.iso' at 4772864 (9%) 3.00M/s eta:14s Receiving data
相關檔案

/etc/lftp.conf
全域設定檔,實際位置依賴系統設定檔目錄,可能在/etc,也可能在/usr/local/et
c

~/.lftp/rc, ~/.lftprc
使用者設定檔,將在/etc/lftp.conf之後執行,所以這裡面的設定會覆蓋/etc/lftp.conf中的設定。
lftp 預設不會顯示 ftp 伺服器的歡迎資訊和錯誤資訊,這在很多時候不方便,因為你有可能想知道這個伺服器到底是因為沒開機連不上,還是串連數已滿。如果是這樣,你可以在 ~/.lftprc 裡寫入一行

debug 3

就可以看到出錯資訊了。
更多的配置選項請查man手冊或在lftp介面內用命令 set -a 獲得。

~/.lftp/log
當lftp轉為後台非掛起模式執行時,輸出將重新導向到這裡

~/.lftp/bookmarks
這是lftp儲存書籤的地方,可以lftp查看bookmark命令

~/.lftp/cwd_history
這個檔案用來儲存訪問過的網站的工作目錄

碰到一個中文字元集顯示的問題, Remote FTP Server 的 Charset 是 gb2312 的, 我若直接 ls, 所有中文字元都是亂碼, 根本沒有辦法使用. 要這樣給一個參數才行:

lftp ryun@www.example.com:/>set ftp:charset gb2312

然後再 ls 一下看看, 是不是親切多了 ^____^

這裡還有一個方法, 針對經常使用中文字元集FTP的朋友可以這樣來設定設定檔:

touch ~/.lftp/rc
echo 'debug 4' >> ~/.lftp/rc
echo 'set ftp:charset GBK' >> ~/.lftp/rc

現在 lftp 後直接支援中文字元顯示

無法被動模式串連,轉為主動模式就可以列目錄了:在 lftp 登入後執行:
set ftp:passive-mode no

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.