Linux操作系统上Lftp工具使用的一些技巧

ZDNet软件频道2007-09-10作者:赛迪网 | 赛迪网
本文关键词:Lftp FTP 操作系统 Linux

Lftp是一个功能强大的下载工具,它支持访问文件的协议: FTP, sFTP,FTPs, http, https, hFTP, fish.(其中FTPs 和https需要在编译的时候包含openssl库)。lLftp的界面非常想一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。

命令行语法

要看Lftp的命令行语法,只要在shell中输入Lftp --help

Lftp [OPTS] <site>
`Lftp' 是在 rc 文件执行后 Lftp 执行的第一个命令
-f <file>           执行文件中的命令后退出
-c <cmd>            执行命令后退出
--help              显示帮助信息后退出
--version           显示 Lftp 版本后退出
其他的选项同 `open' 命令
-e <cmd>            在选择后执行命令
-u <user>[,<pass>] 使用指定的用户名/口令进行验证
-p <port>           连接指定的端口
<site>              主机名, URL 或书签的名字

如果在命令行中输入的站点名称,Lftp将直接登录站点,比如

[yhj@ccse-yhj yhj]$ Lftp FTP://dsec.pku.edu.cn:27/incoming/
... ... (此处略去站点登录信息)
cd 成功,当前目录=/incoming
Lftp dsec.pku.edu.cn:/incoming>

如果在命令行不输入站点名称,则必须在进入到Lftp界面后用open命令打开

[yhj@ccse-yhj yhj]$ Lftp 
Lftp :~> open FTP://dsec.pku.edu.cn:27/incoming/
cd 成功,当前目录=/incoming
Lftp dsec.pku.edu.cn:/incoming>

相关文件

/etc/Lftp.conf

全局配置文件,实际位置依赖系统配置文件目录,可能在/etc,也可能在/usr/local/etc

~/.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

这个文件用来存储访问过的站点的工作目录

常用命令

下载单个文件和一组文件,断点续传用-c参数

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

多线程下载,类似网络蚂蚁的功能;缺省是5个线程

Lftp dsec.pku.edu.cn:/> pget -n 4 ls-lR.txt

后台任务管理

缺省情况下,按 Ctrl+z,正在执行的任务将转为后台执行,也可以在命令行末尾加&符号使任务在后台执行。用jobs命令可以查看所有的后台进程。用 queue命令可以排队新的任务。如果退出Lftp是还有任务在后台执行,Lftp将转为后台执行。

其它用法

Lftp支持类似bash的管道操作,例如用下面的命令可以将FTP服务器上的特定目录下(也可以是整个站点)所有文件的大小存到本地的文件ls.txt中

Lftp dsec.pku.edu.cn:/> du incoming > ls.txt

!shell command

anon 匿名登录

at time [-- command] 在给定时间执行命令.eg:‘at 08:00 -- exit top kill &

cls和ls区别:ls是由服务器来格式化输出,cls则是由Lftp自己来格式化,类似shell中的ls命令

command cmd args... 直接运行cmd,忽略alias

exit [bg] [top] [kill]

find 可遍历目录,用于缺乏ls -R文件的服务器

glob [-d] [-a] [-f] command pattern:用于模式扩展,普通的Lftp命令没有模式扩展功能

-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]

重复执行command,默认间隔1秒

-c 重复次数

--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

file:charset (string)

设置本地字符集,初始化默认读取系统locale

FTP:charset (string)

FTP服务器端字符集,默认为空,即本地系统locale同,只在server不支持utf-8时用

我的设置:

set FTP:charset "gbk"

set sFTP:charset "UTF-8"

set file:charset "UTF-8"

FTP:passive-mode (boolean)

默认为被动模式

设置FTP的被动模式,在有防火墙或者转发路由时用

Lftp在被动模式用PASV命令,而不用主动模式的PORT命令

passive mode:Lftp自己建立到FTP server的连接

active mode: FTP server建立数据传输的连接

我的设置:

# 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

您看到此篇文章时的感受是:
支持
愤怒
无聊
暴汗
养眼
炒作
不解
标题党
搞笑
用户评论
  • 评论列表
  • 本篇文章共有 0 条评论
用户名
评论内容
发表时间
- 发表评论 -
匿名
注册用户
向ZDNet提问

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号