lftp

http://lcs.ios.ac.cn/~scwang/html/lftp.html

// 使用lftp脚本,lftp -f 脚本名,这样就可以方便配合shell来实现ftp操作

lftp是一个命令行ftp客户端,于我而言在许多方面其功能比许多图形界面的要好得多。它内建了bash支持,可以方便地调用bash的命令,例如支持管道可以把ls命令导出到grep命令中,方便地实现ftp查找功能。


实用命令

在这里我并不想对lftp的命令做一个完整的介绍,而只想列出一些我自己认为比较有实用的命令技巧。

  • mirror

    用下面的命令来下载一个目录

    mirror dirname

    用下面的命令来上传一个目录

    mirror -R dirname

    注意:是大写的R而不是小写的。

    我希望在做mirror时,文件和目录的访问权限设置采用本地的策略 。在.lftp/rc文件中加入下面的内容:

    set mirror:set-permissions off

  • put

    把文件filea以文件名fileb上传到服务器上

    put filea -o fileb

  • quote <cmd>

    直接使用FTP协议的命令,例如:

    quote "PASV"

script

lftp支持脚本,这使得我们可以把某些例行的工作用脚本的形式写出来,在用到的时候一次执行即可。例如我就使用下面的脚本来进行个人网站的文件上传工作

connect sitenameuser usernamecd public_htmllcd ~/public_htmlput index.phpmirror -R docsmirror -R htmlmirror -R imagemirror -R php

在进行网页上传时只需执行下面的命令即可

lftp -f scriptfilename

解决显示乱码问题

用lftp登陆某些ftp时会显示乱码,如登陆我们所里的ftp服务器。这是由于 lftp与远程的ftp服务器的编码不同而引起的。默认情况下,lftp从当前的 locale中取得字符编码,以便于能正确地在当前的terminal 上显示。如果这个编码与远程的ftp服务器的编码不同,那么lftp把从远程ftp服务器获得的数据本地显示时就会形成乱码。解决的方法是让lftp知道远程的ftp服务器使用了什么样的编码,可以通过下面的命令来实现

set ftp:charset gb2312

只要把gb2312换成你连接的ftp服务器的编码就可以了。但这并不足够,你会发现下载来的中文文件名都是乱码,你需要进一步地进行设定本地的编码:

set file:charset UTF-8

你也可以把这些写在你的个人配置文将~/.lftp/rc中。

Created by scwang, send any question to scwang

Lastly modified on $Date: 2008-07-15 17:26:04 +0800 (Tue, 15 Jul 2008) $.