LFTP使用实例

LFTP介绍

lftp是一个功能强大的ftp/http客户端,作者是 Alexander Lukyanov。

lftp支持多种传输协议,如ftp、http、https、sftp、exp等。

如同BASH一样,lftp支持任务管理。并且具备书签管理、内置镜像和多线程传送功能。

使用LFTP

登录服务器

lftp ftp://user:password@ip:port

以上是一个完整的lftp登录示例,其中包含协议(ftp)、用户名(user)、密码(password)、主机(ip)以及端口(port)

默认情况下lftp直接访问ftp服务,默认登录端口为22,因此我们可以使用以下方法来便捷登录主机

lftp user@ip

然后系统会提示输入password,完成后登录成功!

lftp命令行参数

lftp :~> help
    !<shell-command>                     (commands)
    alias [<name> [<value>]]             attach [PID]
    bookmark [SUBCMD]                    cache [SUBCMD]
    cat [-b] <files>                     cd <rdir>
    chmod [OPTS] mode file...            close [-a]
    [re]cls [opts] [path/][pattern]      debug [<level>|off] [-o <file>]
    du [options] <dirs>                  exit [<code>|bg]
    get [OPTS] <rfile> [-o <lfile>]      glob [OPTS] <cmd> <args>
    help [<cmd>]                         history -w file|-r file|-c|-l [cnt]
    jobs [-v] [<job_no...>]              kill all|<job_no>
    lcd <ldir>                           lftp [OPTS] <site>
    ln [-s] <file1> <file2>              ls [<args>]
    mget [OPTS] <files>                  mirror [OPTS] [remote [local]]
    mkdir [-p] <dirs>                    module name [args]
    more <files>                         mput [OPTS] <files>
    mrm <files>                          mv <file1> <file2>
    [re]nlist [<args>]                   open [OPTS] <site>
    pget [OPTS] <rfile> [-o <lfile>]     put [OPTS] <lfile> [-o <rfile>]
    pwd [-p]                             queue [OPTS] [<cmd>]
    quote <cmd>                          repeat [OPTS] [delay] [command]
    rm [-r] [-f] <files>                 rmdir [-f] <dirs>
    scache [<session_no>]                set [OPT] [<var> [<val>]]
    site <site-cmd>                      source <file>
    torrent [-O <dir>] <file|URL>...     user <user|URL> [<pass>]
    wait [<jobno>]                       zcat <files>
    zmore <files>

常用的命令解释如下:

远端操作

  • ls 显示远端目录列表
  • cd 切换远端目录
  • get 下载文件
  • put 上传文件
  • mv 移动远端文件
  • rm 删除远端文件
  • pwd 显示远端目录
  • du 计算远端目录大小
  • 退出

本地操作

  • !ls 显示本地目录列表
  • lcd 切换本地目录
  • lpwd 显示本地目录

LFTP使用范例

登录服务器

root@hostus:~# lftp qxu1128@qxu1128.my3w.com
Password:
lftp qxu1128@qxu1128.my3w.com:~> ls

列出服务器目录文件

lftp qxu1128@qxu1128.my3w.com:/> ls
drwxr-xr-x    2 0        0            4096 Jan 23  2015 backup
drwxr-xr-x    2 675      100          4096 Jan 23  2015 cgi-bin
drwxr-xr-x    2 0        0            4096 Apr 01 03:40 ftplogs
drwxr-xr-x    4 675      100          4096 Apr 01 11:02 htdocs
drwxr-xr-x    2 675      100          4096 Jan 23  2015 myfolder
drwxr-xr-x    2 0        0            4096 Apr 01 02:03 wwwlogs

切换远端目录

lftp qxu1128@qxu1128.my3w.com:/> cd htdocs/
lftp qxu1128@qxu1128.my3w.com:/htdocs>

上传文件

lftp qxu1128@qxu1128.my3w.com:/htdocs> put tb7302.apk
`tb7302.apk' at 1913856 (24%) 77.7K/s eta:75s [Sending data]

7713808 bytes transferred in 78 seconds (97.0K/s)

下载文件

lftp qxu1128@qxu1128.my3w.com:/htdocs> get bk.apk
`bk.apk' at 124528 (1%) 28.1K/s eta:4m [Receiving data]

7713808 bytes transferred in 519 seconds (14.5K/s)

上传文件夹

lftp qxu1128@qxu1128.my3w.com:/htdocs> mirror -R bootstrap/
Total: 4 directories, 14 files, 0 symlinks
New: 14 files, 0 symlinks
1079609 bytes transferred in 7 seconds (150.7 KiB/s)

下载文件夹

lftp qxu1128@qxu1128.my3w.com:/htdocs> mirror bootstrap/ new
Total: 4 directories, 14 files, 0 symlinks
New: 14 files, 0 symlinks
1079609 bytes transferred in 6 seconds (189.9 KiB/s)
lftp qxu1142380172@qxu1142380172.my3w.com:/htdocs> !ls new/
css  fonts  js

中文乱码

有时由于编码问题,我们看到的中文可能是乱码,如下:

lftp qxu1128@qxu1128.my3w.com:/> ls
drwxr-xr-x    2 0        0            4096 Jan 23  2015 backup
drwxr-xr-x    2 675      100          4096 Jan 23  2015 cgi-bin
drwxr-xr-x    2 0        0            4096 Apr 01 03:40 ftplogs
drwxr-xr-x    4 675      100          4096 Apr 01 11:02 htdocs
drwxr-xr-x    2 675      100          4096 Jan 23  2015 myfolder
drwxr-xr-x    2 0        0            4096 Apr 01 02:03 wwwlogs
-r-xr--r--    1 55961    100           606 Aug 31  2015 ▒▒▒ȶ▒▒▒.txt

如果出现这种情况,就需要进行编码设置,如下:

lftp qxu1128@qxu1128.my3w.com:/> set ftp:charset GBK
lftp qxu1128@qxu1128.my3w.com:/> set file:charset UTF-8

设置完成后再看:

lftp qxu1128@qxu1128.my3w.com:/> ls
drwxr-xr-x    2 0        0            4096 Jan 23  2015 backup
drwxr-xr-x    2 675      100          4096 Jan 23  2015 cgi-bin
drwxr-xr-x    2 0        0            4096 Apr 01 03:40 ftplogs
drwxr-xr-x    4 675      100          4096 Apr 01 11:33 htdocs
drwxr-xr-x    2 675      100          4096 Jan 23  2015 myfolder
drwxr-xr-x    2 0        0            4096 Apr 01 02:03 wwwlogs
-r-xr--r--    1 55961    100           606 Aug 31  2015 请先读我.txt

以上两条set命令可以写入lftp配置文件,以方便以后使用,关于lftp配置文件参考下节介绍。

LFTP书签使用方法

我们可以使用书签来存储一些商用的ftp登录信息,lftp的书签文件为~/.lftp/bookmarks,我们可以编辑它来添加书签

lftp书签格式如下

bkname ftp://user:password@ip:port

设置好书签后,可以使用lftp加书签名来登录

lftp bkname

书签使用示例:

root@hostus:~# cat ~/.lftp/bookmarks
aliyun ftp://qxu172@qxu150172.my3w.com
root@hostus:~# lftp aliyun
Password:
lftp qxu1128@qxu1128.my3w.com:~> ls
drwxr-xr-x    2 0        0            4096 Jan 23  2015 backup
drwxr-xr-x    2 675      100          4096 Jan 23  2015 cgi-bin
drwxr-xr-x    2 0        0            4096 Apr 01 03:40 ftplogs
drwxr-xr-x    4 675      100          4096 Apr 01 11:33 htdocs
drwxr-xr-x    2 675      100          4096 Jan 23  2015 myfolder
drwxr-xr-x    2 0        0            4096 Apr 01 02:03 wwwlogs

LFTP配置文件

lftp执行配置文件顺序为/etc/lftp.conf~/.lftprc~/.lftp/rc,我们可以编辑这些修改这些文件,来达到全局配置或者用户自定义配置。

set

在设置文件中,使用set来设置一些变量的值,如下:

set ftp:ssl-force on
set ssl:verify-certificate on
set ftp:use-feat off
set ftp:ssl-protect-data on

debug

默认情况下lftp是静默提示的,如果需要查看一些提示信息,就要对debug进行设置

  • debug 5 显示所有调试信息
  • debug 3 仅显示欢迎信息和错误信息

alias

定义命令别名,比如为ls设置别名dir以方便个人使用习惯,如下:

alias dir ls
alias less more
alias zless zmore
alias bzless bzmore
alias reconnect "close; cache flush; cd ."
alias edit "eval -f "get $0 -o ~/.lftp/edit.tmp.$$ && shell \\"cp -p ~/.lftp/edit.tmp.$$ ~/.lftp/edit.tmp.$$.orig && vim ~/.lftp/edit.tmp.$$ && test ~/.lftp/edit.tmp.$$ -nt ~/.lftp/edit.tmp.$$.orig\\" && put ~/.lftp/edit.tmp.$$ -o $0; shell rm -f ~/.lftp/edit.tmp.$$*"