lftp:无所不能的ftp命令行工具

大多时间都在使用windows下的ftp工具,用过的也确实不少了,比如大名鼎鼎的flashfxp,cuteftp等,还有之前用的leechftp,leapftp等等,都是很好的工具,但是到了linux后发现一切变了,包括filezila、gftp等等都不尽如人意,还是用用ftp吧,自从看到lftp后,一切都变了:)【当然lftp也不是linux的专属,windows也有了此版本,具体见地址下载哦:http://storage.cczy.org/Programs/lftp.zip】

1、登录ftp服务器
lftp ftp://user:password@site:port
lftp user:password@site:port
lftp site -p port -u user,password
lftp site:port -u user,password
方法很多,其实够用就好了:)
open OPTS
开启某个站台
open -u , -p site

2、远程目录操作
ls
显示远端文件列表(!ls 显示本地文件列表)。
有一点要说明,第一次ls之后,目录表就被保存到了本地cache,这样再次ls就不能得到这个目录下最新的列表,这时可以用rels重新下载目录表。这里的cache是lftp的默认设置,目的无非就是更快的得到列表,有时却不符和你的使用习惯。可以用 cache on和cache off开关cache,也可以用cache flush来清空cache。lftp也支持tab匹配功能,大大减少了劳动强度。
cd
切换远端目录(lcd 切换本地目录)。
mkdir
建立远端目录。
rmdir
删除远端目录。
pwd
显示目前远端所在目录(lpwd 显示本地目录)。
du
计算远端目录的大小
mv
移动远端文件(远端文件改名)。
rm
删除远端文件。
参数-r,递归删除文件夹
mrm
删除多个远端文件(支持通配符)。

3、本地目录操作
!
执行本地 shell的命令(由于lftp 没有 lls, 故可用 !ls 来替代)
lcd
切换本地目录
lpwd
显示本地目录
4、上传下载
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 为叁个连结

mirror OPTS remote [local]
下载整个目录(楼上的 get 只能用来抓档案)
-c 续传
-e 这个要小心一些, 比较远端和本地端的档案, 假如远端没有的, 就将本地端的档案删除, 也就是将本地端和远端资料同步。
-R 上传整个目录
-n 只下载较新的档案
-r 不用递迴到目录中
--parallel=n 同时下载 n 个档案(预设一次只下载一个)

put
上传文件。
mput
上传多个文件(支持通配符)。

5、关于书签(bookmark)
bookmark设定书签。
ftp中的bookmark命令,是将配置写到~/.lftp/bookmarks文件中;我们可以直接修改此文件,快速登陆ftp服务器。
borkmark文件格式为:borkmarkname    ftp-url如下
别名<空格>ftp://user:passwd@site:port
再次使用则直接录入:lftp 别名即可
bookmark add name 用来新增名称为 name 的书籤
bookmark del name 删除名称为 name 的书籤
bookmark list 显示目前有设定那些书籤(另外直接打 bookmark 和 bookmark list 的结果一样)
bookmark edit 呼叫编辑器修改书籤 (~/.lftp/bookmarks)(windows不支持)
6、关于别名(alias)
alias less more
alias reconnect "close; cd ."
直接输入 alias 即可看到目前定义了那些别名。如果只输入 alias name 的话, 则是取消 name 这个别名。
7、关于队列(queue)
queue OPTS []
将 cmd 放到伫列中等待执行
-d index 将编号为 index 的 job 删除
-m index new_index 将编号为 index 的 job 移至编号 new_index, 插队专用。
-n index 在编号 index 之前新增一个 job

8、关于后台工作管理(jobs等)
wait []
将背景执行中的程序移至前景(也可用 fg)

kill all|
删除全部的 jobs 或 job_no

repeat delay command
每隔 delay 秒, 重覆执行 command, 预设是每隔一秒

9、退出等其他相关
登录ftp后输入help取得帮助
输入exit退出
set OPT []
设定变数
直接键入 set 可看目前定义了那些变数

source
读取 file, 並执行 file 中的命令(应该是和 bash 中的 source 命令是一样的吧)

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

renlist []
只显示远端的档名

10、关于字符编码、配置文件等问题
lftp部分配置文件存放在~/.lftprc或者~/.lftp/rc【windows版本没有此文件】
并在其中加入以下内容:
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"

另外:lftp 内建了 shell-like 的命令格式, 允许在背景同时执行多个命令(&)。所有背景执行的工作都是在同一个程序中(process), 能将前景执行的命令放到背景执行(Ctrl-z), 或从背景拿回前景执行(wait 或 fg), 甚至还可以经由上个命令的传回值来决定目前这个命令是否要执行(&& ||)。在结束 lftp 时, 如果还有程序执行中, lftp 会将自己切换到 no hup 模式並放到背景执行。因此不必担心执行 lftp 当中无法登出。以上主要用于linux,windows好像不支持哦

关于queue,jobs等用法,示例如下:
lftp user:pwd@localhost:21/pub/Iso
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

posted @ 2011-11-25 11:15  orlla  阅读(1986)  评论(0编辑  收藏  举报