Lftp是一個功能強(qiáng)大的下載工具,它支持訪問文件的協(xié)議: ftp, sftp,ftps, http, https, hftp, fish.(其中ftps 和https需要在編譯的時候包含openssl庫)。llftp的界面非常想一個shell: 有命令補(bǔ)全,歷史記錄,允許多個后臺任務(wù)執(zhí)行等功能,使用起來非常方便。它還有書簽、排隊、鏡像、斷點續(xù)傳、多進(jìn)程下載等功能。
相關(guān)配置文件:
/etc/lftp.conf
全局配置文件,實際位置依賴系統(tǒng)配置文件目錄,可能在/etc,也可能在/usr/local/etc
~/.lftp/rc, ~/.lftprc
用戶配置文件,將在/etc/lftp.conf之后執(zhí)行,所以這里面的設(shè)置會覆蓋/etc/lftp.conf中的設(shè)置,貌似.lftprc沒用,而下邊的配置文件都與.lftp有關(guān),不如直接建立.lftp目錄及rc文件
lftp 缺省不會顯示 ftp 服務(wù)器的歡迎信息和錯誤信息,這在很多時候不方便,因為你有可能想知道這個服務(wù)器到底是因為沒開機(jī)連不上,還是連接數(shù)已滿。如果是這樣,你可以在 ~/.lftp/rc 里寫入一行
debug 3
就可以看到出錯信息了。
更多的配置選項請查man手冊或在lftp界面內(nèi)用命令 set -a 獲得。
~/.lftp/log
當(dāng)lftp轉(zhuǎn)為后臺非掛起模式執(zhí)行時,輸出將重定向到這里
~/.lftp/bookmarks
這是lftp存儲書簽的地方,可以lftp查看bookmark命令
~/.lftp/cwd_history
這個文件用來存儲訪問過的站點的工作目錄
登錄ftp服務(wù)器:
lftp ftp://user:password@site:port
lftp user:password@site:port
lftp site -p port -u user,password
lftp site:port -u user,password
上面的幾種方式都能正常工作,不過密碼都是明文,這樣不太安全。沒關(guān)系
lftp user@site:port
系統(tǒng)會提示輸入password
如果在命令行不輸入站點名稱,則必須在進(jìn)入到lftp界面后用open命令打開
也可以先不帶用戶名登錄,然后在接口界面下用login命令來用指定賬號登錄,密碼不顯示
在用lftp訪問國內(nèi)一些ftp服務(wù)器時,往往看到的中文是亂碼,這是由于服務(wù)器和本地編碼不一致造成的。我們只要在主目錄下新建文件~/.lftp/rc,并在其中加入以下內(nèi)容:
debug 3
set ftp:charset GBK
set file:charset UTF-8
也可以在/etc/lftp.conf 中添加:
set ftp:charset gbk
set file:charset utf8
set pget:default-n 5
常用命令:
下載
get當(dāng)然是可以的,還可以
mget -c *.pdf
把所有的pdf文件以允許斷點續(xù)傳的方式下載。m代表multi
mirror aaa/
將aaa目錄整個的下載下來,子目錄也會自動復(fù)制
pget -c -n 10 file.dat
以最多10個線程以允許斷點續(xù)傳的方式下載file.dat
可以通過設(shè)置pget:default-n的值而使用默認(rèn)值。
上傳
同樣的put,mput,都是對文件的操作,和下載類似。
mirror -R 本地目錄名
將本地目錄以迭代(包括子目錄)的方式反向上傳到ftp site。
模式設(shè)置
file:charset (string)
設(shè)置本地字符集,初始化默認(rèn)讀取系統(tǒng)locale
ftp:charset (string)
ftp服務(wù)器端字符集,默認(rèn)為空,即本地系統(tǒng)locale同,只在server不支持utf-8時用
我的設(shè)置:
set ftp:charset "gbk"
set sftp:charset "UTF-8"
set file:charset "UTF-8"
ftp:passive-mode (boolean)
默認(rèn)為被動模式
設(shè)置ftp的被動模式,在有防火墻或者轉(zhuǎn)發(fā)路由時用
lftp在被動模式用PASV命令,而不用主動模式的PORT命令
passive mode:lftp自己建立到ftp server的連接
active mode: ftp server建立數(shù)據(jù)傳輸?shù)倪B接
我的設(shè)置:
# default: use passive mode
set ftp:passive-mode yes
## 202.38.64.22, use active mode
set ftp:passive-mode/202.38.64.22 no
set ftp:passive-mode/203.38.64.41 no
set ftp:passive-mode/166.111.153.78 no
set ftp:charset gbk
遠(yuǎn)程ftp site用gbk編碼,對應(yīng)的要設(shè)置為utf8,只要替換gbk為utf8即可。
set file:charset utf8
本地的charset設(shè)定為utf8,如果你是gbk,相應(yīng)改掉。
set ftp:passive-mode 1
使用被動模式登錄,有些site要求必須用被動模式或者主動模式才可以登錄,這個開關(guān)就是設(shè)置這個的。0代表不用被動模式。
set net:limit-rate 10000,10000
限制上傳下載各為10KB/s
!
執(zhí)行本地 shell的命令(由于lftp 沒有 lls, 故可用 !ls 來替代)
下載單個文件和一組文件,斷點續(xù)傳用-c參數(shù)
lftp dsec.pku.edu.cn:/> get -c ls-lR.txt
lftp dsec.pku.edu.cn:/> mget *.txt
鏡像(反鏡像即上傳)一個目錄,可以用多個線程并行鏡像一個目錄(--parallel=N)
lftp dsec.pku.edu.cn:/> mirror incoming local_name
lftp dsec.pku.edu.cn:/> mirror -R local_name
lftp dsec.pku.edu.cn:/> mirror --parallel=3 incoming local_name
多線程下載,類似網(wǎng)絡(luò)螞蟻的功能;缺省是5個線程
lftp dsec.pku.edu.cn:/> pget -n 4 ls-lR.txt
后臺任務(wù)管理
缺省情況下,按 Ctrl+z,正在執(zhí)行的任務(wù)將轉(zhuǎn)為后臺執(zhí)行,也可以在命令行末尾加&符號使任務(wù)在后臺執(zhí)行。用jobs命令可以查看所有的后臺進(jìn)程。用 queue命令可以排隊新的任務(wù)。如果退出lftp是還有任務(wù)在后臺執(zhí)行,lftp將轉(zhuǎn)為后臺執(zhí)行。
其它用法
lftp支持類似bash的管道操作,例如用下面的命令可以將ftp服務(wù)器上的特定目錄下(也可以是整個站點)所有文件的大小存到本地的文件ls.txt中
lftp dsec.pku.edu.cn:/> du incoming > ls.txt
!shell command
anon 匿名登錄
at time [-- command] 在給定時間執(zhí)行命令.eg:‘at 08:00 -- exit top kill &
cls和ls區(qū)別:ls是由服務(wù)器來格式化輸出,cls則是由lftp自己來格式化,類似shell中的ls命令
command cmd args... 直接運行cmd,忽略alias
exit [bg] [top] [kill]
find 可遍歷目錄,用于缺乏ls -R文件的服務(wù)器
glob [-d] [-a] [-f] command pattern:用于模式擴(kuò)展,普通的lftp命令沒有模式擴(kuò)展功能
-f plain files(default)
-d directories
-a all files
kill all | job_no 殺死全部job或指定job號
mirror [OPTS] [source [target]]
-r, --no-recursion don’t go to subdirectorie
- R, --reverse reverse mirror (put files)
queue [-n num ] cmd
quote cmd
rels [args] 同ls,只是不用cache。
repeat [ -c ] [[-d] delay] [command]
重復(fù)執(zhí)行command,默認(rèn)間隔1秒
-c 重復(fù)次數(shù)
--while-ok breaks loop when command returns non-zero exit code;
--until-ok’ breaks on zero exit code.
Examples:
repeat at tomorrow -- mirror
repeat 1d mirror
ftp中的bookmark命令,是將配置寫到~/.lftp/bookmarks文件中;我們可以直接修改此文件,快速登陸ftp服務(wù)器。
例如添加一行:
echo 'uftp ftp://user:passwd@ftp.ubuntu.org.cn' >> ~/.lftp/bookmarks
lftp的bookmarks文件書寫格式為:
別名<空格>ftp://user:passwd@site:port
以后要登陸ubuntu-cn的ftp,只要執(zhí)行:
lftp uftp
在lftp終端中,前面帶一個l的命令例如lcd,指的是local,就是在本機(jī)的操作,而對應(yīng)的沒有這個l的,都是對ftp site的操作。還有就是要執(zhí)行本地終端命令,也可以用前面帶一個!的方式。這樣,配合起來,終端,本地的操作都很放遍。
例如,查看ftp上所有的以mp3為擴(kuò)展名的文件:
代碼:
find . -name "*.mp3"