lftp用法手冊


蛋疼地翻譯了一遍man lftp......

====================

lftp是個功能強大的文件傳輸工具,操作上很像shell,支持命令補全、歷史記錄、多任務后台執行,還有書簽、排隊、鏡像、斷點續傳、多進程下載等功能。 

lftp支持ftp, ftps, http, https, hftp, fish, sftp, file等多種文件訪問方式(https和ftps方式只有lftp編譯集成了OpenSSL庫時才可用)。可以在open url命令中指定訪問方式,比如open http://www.us.kernel.org/pub/linux/.  hftp是ftp-over-http-proxy協議的縮寫,即通過http代理的ftp訪問,設置ftp:proxy為http://proxy[:port]后會自動應用。fish是通過ssh連接到unix賬戶的協議。sftp是內置了ssh2的訪問協議。 

lftp中的每項操作都是可靠的,非致命錯誤都會被忽略同時操作會被重新執行。比如下載中斷,它會重新從中斷點開始繼續下載;即便ftp服務器不支持斷點續傳,lftp會從頭開始重新下載文件知道文件傳輸完成。 

lftp擁有類似shell的語法,支持並行在后台(&)運行命令,支持用()分組命令並將它們在后台執行。所有后台任務在同一個進程中執行。使用^Z(Ctrl+Z)將前台任務切換到后台執行,wait或fg(wait的別名)命令將后台任務切換到前台,使用jobs命令羅列正在執行的任務。一些命令(如cat, ls等)允許將輸出重定向至文件或通過管道傳送給別的命令。命令能根據前一命令的結束狀態有選擇性地執行(&&, ||)。 

如果你在仍有任務未完成的情況下退出lftp, lftp將會把自己切換到nohup模式在后台繼續運行,直至任務完成。 

lftp內置了鏡像功能(mirror命令)允許下載整個目錄,反向鏡像功能(mirror -R命令)允許上傳整個目錄到服務器上。鏡像功能同樣可用於同步兩個遠程服務器上的文件夾。 

at命令在當前環境下指定在特定的時刻執行某些任務;queue命令將指定的命令在當前服務器上按順序執行;還有其他很多命令。 

啟動時,lftp先后執行配置文件/etc/lftp.conf, ~/.lftprc, ~/.lftp/rc 。你可以在這些配置文件中增加alias或set命令。希望看到完整協議調試內容的朋友可以通過debug命令來啟動調試模式,如使用debug 3將看到所有的問候消息和錯誤消息。 

lftp擁有大量的配置項,可以通過set -a命令來查看所有的配置項和值,set -d命令查看配置項的默認值。配置項可以使用縮寫並且省略前導符,只要名稱唯一。 

如果編譯包括了OpenSSL (configure --with-openssl),那么lftp將內置有OpenSSL項目開發的軟件功能。 

lftp命令

! shell command 

運行shell或shell命令;如!ls將列出本地的當前文件夾下的內容。 

alias  [name [value]] 

定義或取消name別名。設置value,別名name將被定義;忽略value,別名name將被取消。沒有參數,將羅列當前的所有別名。比如 

1

2

alias dir ls -lF

alias less zmore

anon 

設置用戶為匿名用戶,默認情況。 

at time [ -- command ] 

等到指定時間執行指定的命令。參見linux下的at命令。 

bookmark  [subcommand] 

操作書簽,子命令如下: 

  • add <name> [<loc>] 將當前位置或指定位置以指定名稱添加到書簽
  • del <name> 刪除指定名稱的書簽
  • edit 啟動編輯器來編輯書簽文件
  • import <type> 導入外部書簽
  • list 羅列所有書簽(默認)

cache  [subcommand] 

操作本地內存緩存,子命令如下: 

  • stat 打印緩存狀態(默認)
  • on|off 開啟或關閉緩存
  • flush 清空緩存
  • size lim 設置緩存大小限制,-1表示不限制
  • expire Nx 設置緩存過期時間為N秒(x=s), 分鍾(x=m), 小時(x=h), 天(x=d)

cat files 

羅列遠程目錄下的內容到標准輸出。 

cd rdir 

切換當前的遠程目錄。前一遠程目錄被存為-, 可以使用cd -切換到前一目錄。每個站點前一目錄會被保存到磁盤,所以即使重啟lftp后同樣可以執行open site; cd -命令。 

chmod mode files 

改變遠程文件的權限控制碼,mode必須為八進制數字。 

close [-a] 

關閉空閑鏈接。默認只關閉當前服務器連接,使用-a關閉所有空閑鏈接。 

cls [OPTS] files... 

獲取指定的文件或目錄信息,以OPTS參數指定的格式顯示結果。與ls的差別是,ls請求由服務器來格式化信息,cls由自身來格式化信息。通過help cls查看OPTS參數的使用。 

command cmd args... 

執行執行的命令,忽略別名。 

debug [-o file] level|off 

切換調試默認是level級別或關閉調試。使用-o重定向調試信息輸出到文件。 

echo [-n] string 

輸出string字符串,使用-n不輸出換行符。 

eval [-f format ] args... 

不指定-f,將把args作為命令執行;使用-f,args將被轉換為新的命令。format可以包括普通字符和占位符$0 ... $9, $@(與參數args對應) 

exit [bg] [top] [kill] [code] 

退出lftp或將lftp切換到后台執行如果仍有活動任務。如果當前沒有活動任務,code會被作為lftp的結束狀態傳給操作系統。如果code被忽略,最后一條命令的退出代碼將被作為code。 

exit bg強制lftp切換到后台執行如果cmd:move-background是false。exit  top終止最上層shell(lftp的內部命令)的執行。exit kill在退出前結束所有任務。選項可以別結合使用,比如at 08:00 -- exit top kill & 將在8:00結束所有任務並退出lftp。 

fg 

wait的別名。 

find  [directory] 

羅列指定目錄(默認為當前目錄)及所有子目錄下的所有文件。作為服務器沒有ls -R功能的補充。輸出可進行重定向。 

ftpcopy 

過時的命令,使用一下命令取代: 

  • get ftp://... -o ftp://...
  • get -O ftp://... file1 file2...
  • put ftp://...
  • mput ftp://.../*
  • mget -O ftp://... ftp://.../*

get [-E] [-a] [-c] [-O base] rfile [-o lfile] ... 

獲取遠程文件rfile並保存為本地文件lfile。如果沒有-o參數,文件將被保存為與rfile同名的本地文件。可以通過指定多個rfile和-o lfile來獲取多個文件。如需使用通配符,請用mget代替get命令。舉例: 

  • get README
  • get README -o debian.README
  • get README README.mirrors
  • get README -o debian.README README.mirrors -o debian.mirrors
  • get README -o ftp://some.host.org/debian.README
  • get README -o ftp://some.host.org/debian-dir/ (end slash is important)

get1 [OPTS] rfile 

傳輸單個文件,選項: 

  • -o <lfile> 目標文件名(默認為同rfile中的文件名)
  • -c 繼續,重新獲取
  • -E 在傳輸完成后刪除源文件
  • -a 使用ascii模式(默認為二進制模式)
  • --source-region=<from-to> 傳輸源文件的指定區塊
  • --target-position=<pos> 指定目標文件的數據寫入位置

glob [-d] [-a] [-f] command patterns 

取出當前目錄下符合patterns的文件或文件夾名,結果串接后傳給command命令。比如glob echo *。選項: 

  • -f  文件(默認)
  • -d 文件夾
  • -a 所有類型

help [cmd] 

打印cmd命令的幫助信息;未指定cmd時將打印所有可用命令。 

jobs [-v] 

羅列正在運行的任務。-v顯示詳細信息,可指定多個-v。 

kill all|job_no 

刪除job_no指定的任務或所有任務。job_no可通過jobs命令查看。 

lcd ldir 

切換當前的本地目錄為ldir。前一本地目錄被存為-, 可以使用lcd -切換到前一目錄。 

lpwd 

打印當前本地的工作目錄。 

ls params 

羅列遠程文件。可以將此命令的輸出重定向至文件或通過管道傳送給其他命令。默認,ls的輸出會被緩存,使用rels或cache flush來查看新的羅列結果。 

mget [-c] [-d] [-a] [-E] [-O base] files 

獲取滿足通配符條件的文件,選項: 

  • -c 繼續,重新獲取
  • -d 創建與文件路徑中目錄名相同的目錄,並保存文件到對應目錄中
  • -E 在傳輸完成后刪除源文件
  • -a 使用ascii模式(默認為二進制模式)
  • -O <base> 指定文件被保存的目錄或URL

mirror [OPTS] [source [target]]

將源文件夾鏡像到目標文件夾。如果目標文件夾以/結尾,原文件夾名稱會被附加到目標文件夾名稱之后。源和目標都可以是指向文件夾的URL。 

  • -c, --continue 續傳上次的任務
  • -e, --delete 刪除遠程目錄上不存在的文件
  •    --delete-first 在傳輸新文件之前刪除舊的文件
  •    --depth-first 進入下一層目錄優先於文件傳輸
  • -s, --allow-suid 根據遠程站點設置suid/sgid比特位
  •    --allow-chown 嘗試將自己設置為文件所有者和所有組
  •    --ascii 使用ascii方式傳輸(隱含了--ignore-size)
  •    --ignore-time 決定是否下載時忽略時間因素
  •    --ignore-size 決定是否下載時忽略文件大小因素
  •    --only-missing 只下載缺少的文件
  •    --only-existing 只下載已經存在於目標文件夾中的文件
  • -n, --only-newer 只下載新文件(-c參數無法工作)
  •    --no-empty-dirs 不創建空文件夾(隱含了--depth-first)
  • -r, --no-recursion 不進入子文件夾
  •    --no-symlinks 不創建符號鏈接
  • -p, --no-perms 不設置文件權限
  •    --no-umask 不使用文件預設權限
  • -R, --reverse 反向鏡像(上傳文件)
  • -L, --dereference 將符號鏈接作為文件下載
  • -N, --newer-than=SPEC 只下載比指定時間晚的文件
  •    --on-change=CMD 只要有文件或文件夾存在差異就執行命令CMD
  •    --older-than=SPEC 只下載比指定時間早的文件
  •    --size-range=RANGE 只下載大小在指定區間上的文件
  • -P, --parallel[=N] 並行下載N個文件
  •    --use-pget[-n=N] 使用pget傳輸每個文件
  •    --loop 循環知道找不到差異
  • -i RX, --include RX 包括相匹配的文件
  • -x RX, --exclude RX 不包括相匹配的文件
  • -I GP, --include-glob GP 包括相匹配的文件
  • -X GP, --exclude-glob GP 不包括相匹配的文件
  • -v, --verbose[=level] 冗長操作
  •    --log=FILE 將執行的lftp命令寫入文件FILE
  •    --script=FILE 將lftp命令寫入文件FILE,但不執行
  •    --just-print, --dry-run 與--script=-相同
  •    --use-cache 使用緩存目錄列表
  • --Remove-source-files 傳輸完成后刪除源文件
  • -a 與--allow-chown --allow-suid --no-umask相同

使用-R時,第一個目錄為本地目錄,第二個目錄為遠程目錄。如果第二個目錄被忽略,將采用第一個目錄的目錄名。如果兩個目錄都被忽略,將采用當前的本地和遠程目錄。如果目標目錄以/結尾,那么源目錄名將被加到目標目錄上。

RX是擴展的正則表達式,具體語法可參考egrep命令。

GP是通配符規則,比如*.zip。

包含和不包含選項可以被多次使用。符合以下規則之一的文件將被鏡像傳輸:(1)符合包含規則而不符合之后的不包含規則;(2)不符合任何規則,但第一條為不包含規則。目錄匹配時包括結尾的/。

注意:符號鏈接(軟鏈接)不會被傳輸到遠程服務器上,因為無法被FTP協議傳輸。要上傳鏈接指向的文件,請使用mirror -RL命令(將符號鏈接視為普通文件)。

對於--newer-than選項,你可以使用文件或時間作為參數。時間參數的格式同at命令,如now-7days、week age等。如果指定為文件,將采用文件的修改時間。

冗長輸出級別可以通過--verbose=level選項或者使用多個-v選項進行設定,比如-vvv。冗長輸出級別為:

  • 0 - 無輸出(默認)
  • 1 - 打印動作
  • 2 - +打印不刪除的文件名(當沒有采用-e選項時)
  • 3 - +打印

--only-newer關閉文件大小比較,只上傳/下載新的文件,即使文件大小存在差異,默認情況下舊的文件會被新的文件代替。

當用URL代替目錄時,可以對兩台服務器上的目錄進行鏡像操作。只要可以,會自動使用FXP在FTP服務器之間進行文件傳輸。

一些ftp服務器默認隱藏了.開頭的文件(如.htaccess),只會在LIST命令使用-a選項時顯示。在這種情況下,使用設置set ftp:list-options -a。

mkdir [-p] dir(s)

創建遠程目錄。如果使用-p參數,將創建路徑的所有相關目錄。

module module [ args ]

使用dlopen函數加載已知模塊。如果模塊名中不包含/,將在module:path指定的位置搜索模塊。參數會被傳給module_init函數,具體技術細節可查看README.modules。

more files

與cat files | more命令相同。

mput [-c] [-d] [-a] [-E] [-O base] files

上傳符合通配符規則的文件。默認使用本地文件名作為遠程的文件名,可以使用-d選項修改。

  • -c 繼續上傳
  • -d 創建與文件路徑中目錄名相同的目錄,並將文件放到對應目錄,而不是當前目錄
  • -E 傳輸成功后刪除源文件
  • -a 使用ascii模式(默認為二進制模式)
  • -O <base> 指定目標目錄或URL

mrm file(s)

與glob rm命令相同,刪除符合通配符規則的文件。

mv file1 file2

將文件file1重命名為file2。

nlist [args]

列出遠程文件名。

open [-e cmd] [-u user[,pass]] [-p port] host|url

打開一台ftp服務器。

pget [OPTS] rfile [-o lfile]

使用多個連接下載同一文件,可提高下載速度,但會加重網絡和服務器的負載,影響其他用戶。盡量只在緊急時使用。選項:

  • -c 繼續傳輸;需要文件lfile.lftp-pget-status
  • -n maxconn 設置最大連接數(默認使用pget:default-n設置)

put [-E] [-a] [-c] [-O base] lfile [-o rfile]

將文件lfile上傳到遠程並存為rfile。如果忽略-o參數,lfile中的文件名將被作為遠程的文件名。如需擴展通配符,請使用mput。

  • -o <rfile> 指定遠程文件名(默認為lfile中的文件名)
  • -c 繼續上傳,需要遠程文件的覆蓋權限
  • -E 傳輸完成后刪除源文件
  • -a 使用ascii模式(默認為二進制模式)
  • -O <base> 指定目標目錄或URL

pwd [-p]

打印當前的遠程URL。使用-p參數在URL中顯示密碼。

queue [-n num ] cmd

將指定命令放入隊列來依次執行。每個站點維護一個命令隊列。-n參數將指定命令放入隊列中指定位置。不要將cd或lcd命令加入隊列,這可能使lftp執行出現混亂。應在queue命令之前使用cd/lcd切換目錄。允許通過queue wait <jobno>命令將正在執行的任務加入隊列,任務將繼續執行即使它不是隊列中的第一個。

queue stop將停止隊列,它將不再執行任何新的命令,但正在執行的命令會繼續執行。你可以使用queue stop命令來創建一個空的暫停隊列。queue start命令可以重新啟動命令執行。當你退出lftp時,它將自動啟動所有暫停的隊列。

沒有指定參數的queue命令將創建一個暫停隊列或者打印隊列狀態。

queue --delete|-d [index or wildcard expression]

刪除隊列中的一個或多個條目。如果沒有指定參數,會刪除隊列中的最后一個條目。

queue --move|-m <index or wildcard expression> [index]

將指定條目移動到隊列的指定位置;如沒有指定位置,將會移動到末尾。

  • -q 不輸出任何提示
  • -v 輸出詳細的提示
  • -Q 以特定格式輸出,可以被重新加入隊列

01

02

03

04

05

06

07

08

09

10

11

> get file &

[1] get file

> queue wait 1

> queue get another_file

> cd a_directory

> queue get yet_another_file

queue -d 3          刪除隊列中的第3個條目

queue -m 6 4        移動隊列中的第6個條目到第4個條目之前

queue -m "get*zip" 1     移動所有符合get*zip的命令道隊列最開始(條目順序不變)

queue -d "get*zip"  刪除所有所有符合get*zip的命令

quote cmd

FTP協議下,將直接向服務器發送命令。使用時需要注意:它將導致遠程處於未知狀態,導致重新連接,即使重新連接狀態仍然無法被重置。

HTTP協議下,語法為quote <command> [<args>],command可以為set-cookie或post。

1

2

3

4

open http://www.site.net

quote set-cookie "variable=value; othervar=othervalue"

set http:post-content-type application/x-www-form-urlencoded

quote post /cgi-bin/script.cgi "var=value&othervar=othervalue" > local_file

FISH協議下,將直接向服務器發送命令。使用此方法可以在服務器上執行任何命令。但執行的命令不能需要輸入和在新行的開頭打印###,否則將導致協議失去同步。

1

2

open fish://server

quote find -name \*.zip

reget rfile [-o lfile]

與get -c命令相同。

rels [args]

與ls命令相同,但忽略緩存。

renlist [args]

與nlist命令相同,但忽略緩存。

repeat [ -c <count>] [[-d] delay] [command]

重復執行命令。在命令執行之間會加入延時,默認為1秒。-c選項用來限制重復次數。--while-ok將使命令返回非零值時退出循環;--until-ok將使命令返回零值時退出循環。比如:

1

2

repeat at tomorrow -- mirror

repeat 1d mirror

reput lfile [-o rfile]

與put -c命令相同。

rm [-r] [-f] files

刪除遠程文件。如需要使用通配符規則,請使用mrm代替。-r指定遞歸刪除目錄,-f 取消錯誤消息提示。

rmdir dir(s)

刪除遠程目錄。

scache [session]

羅列緩存的會話,或切換到指定會話。

set [var [val]]

將變量設定為指定值。如果值被忽略了,則取消這個變量。如未指定變量名,將顯示被改變的設置變量。可以使用以下選項修改顯示:

  • -a 羅列所有的設置,包括默認值
  • -d 只羅列默認值

site site_cmd

執行站點命令site_cmd,可以重定向輸出。

sleep interval

休眠指定時間間隔然后退出。時間間隔默認以秒為單位,但可以后綴m, h, d來對應表示分鍾、小時、天。

slot [name]

選擇特定的slot,或者羅列所有已分配的slot。slot是與服務器的一個連接,有點像虛擬控制台。你可以創建連接到不同服務器的多個slot,並可在不同的slot之間進行切換。你同樣可以使用slot:name作為偽URL表示那個slot位置。

默認情況下,可以使用Meta-0 至 Meta-9(往往使用Alt鍵代替Meta鍵)快捷鍵來快速切換0-9的slot。

source file

source -e command

執行file文件中的命令或是有特定command返回的命令。

1

2

source ~/.lftp/rc

source -e echo help

suspend

暫停lftp進程。注意:傳輸任務同樣或被暫停直到你使用shell的fg或bg命令繼續執行這個進行。

user user [pass]

user URL [pass]

使用特定的信息登陸遠程ftp。如果你對URL指定了用戶名,輸入的密碼將被緩存起來供以后使用。

version

打印lftp版本信息。

wait [jobno]

wait all

等待特定任務終止。如果忽略jobno,將等待最后一個后台任務終止。wait all等待所有任務終止。

zcat files

與cat相同,但通過zcat過來每個文件。

zmore files

與more相同,但通過zcat過來每個文件。

lftp設置

lftp啟動時執行~/.lftprc 和~/.lftp/rc。你可以在這兩個文件中加入alias或set命令。如果你想看到完全的協議調試過程,可以使用debug來打開調試。

系統級的啟動文件為/etc/lftp.conf。

lftp擁有眾多設置項,可以通過set -a命令查看所有設置項及它們的值。

lftp命令選項

-d 切換到調試模式

-e commands 執行指定的命令,並且不退出

-p port 使用執行端口進行連接

-u user[,pass] 使用執行的用戶名和密碼進行連接

-f script_file 執行文件中的命令並且退出

-c commands 執行指定的命令並且退出

環境變量

以下環境變量將被lftp使用:

HOME 作為~的擴展

SHELL 在!命令時決定使用哪個shell來運行

PAGER 作為頁面名稱,在more和zmore命令中使用

http_proxy, https_proxy 作為初始時http:proxy, hftp:proxy, https:proxy的值

ftp_proxy 作為初始時ftp:proxy或hftp:proxy的值(由環境變量中的URL協議指定)

no_proxy 作為初始時的net:no-proxy值

LFTP_MODULE_PATH 作為初始時的module:path值

LFTP_HOME 用於定位用戶配置文件的目錄,如未設置將使用~/.lftp

相關文件

/etc/lftp.conf 系統級啟動文件。實際位置由--sysconfdir配置項決定。

~/.lftp/rc, ~/.lftprc 這些文件在/etc/lftp.conf之后被執行。

~/.lftp/log 用於記錄lftp運行於后台nohup模式時的日志。

~/.lftp/bookmarks 用戶保存lftp中的書簽。

~/.lftp/cwd_history 用於保存每個站點的當前工作目錄。

~/.netrc 用於保存站點的用戶名和密碼。

 

原文http://witmax.cn/linux-lftp.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM