显示标签为“FTP”的博文。显示所有博文
显示标签为“FTP”的博文。显示所有博文

2008年7月28日星期一

lftp

lftp 作为 Linux 下最常用的 ftp client 之一,一直是我见到的最好的命令行工具之一,比起 GUI 来说它有自己的很多优点。这是该包内东西:
/usr/bin/lftp
/usr/bin/lftpget
/usr/share/man/man1/lftp.1.gz
/usr/share/man/man1/lftpget.1.gz
/usr/share/lftp/import-ncftp
/usr/share/lftp/import-netscape
/usr/share/lftp/verify-file
/usr/share/lftp/convert-netscape-cookies
/usr/share/doc/lftp/BUGS
/usr/share/doc/lftp/FAQ
/usr/share/doc/lftp/README.debug-levels
/usr/share/doc/lftp/README.modules
/usr/share/doc/lftp/TODO
/usr/share/doc/lftp/copyright
/usr/share/doc/lftp/NEWS.gz
/usr/share/doc/lftp/README.gz
/usr/share/doc/lftp/changelog.Debian.gz
/usr/share/doc/lftp/changelog.gz
/etc/lftp.conf
我们看到有两个工具 lftp 和 lftpget,后者本身是一个 shell script 用来调用 lftp 下载。因此我们主要介绍 lftp 的用法。lftp 一般作为一个交互式程序来运行。它自己会屏蔽 SIGHANGUP 这类信号,如果在还有下载任务时退出或者出现意外断线什么的,这可以保证该进程不会退出。lftp 也不仅仅支持 ftp 协议,它还可以从 ftps、http、https、hftp、fish、sftp 和 file 这些协议下载文件。lftp 提供的交互环境和 shell 类似,下面介绍一些常用的命令:
  • !shell command 执行一个 shell 里面的命令
  • anon 使用匿名用户。
  • at time -- command 在指定时间执行命令,比如下载等等。
  • bookmark add name loc 增加一个地址到书签,bookmark del name 删掉一个书签,bookmark edit 编辑书签文件,bookmark list 列出书签,bookmark import 用于导入书签。
  • cache 用于管理 lftp 的缓存,如 cache stat 列出统计信息,cache on/off 打开关闭 cache,cache flush 将 cache 写入硬盘,cache size 设置 cache 大小,cache expire 设置移除 cache 时间。
  • cat 将远程文件内容输出到 stdout。
  • cd 切换远程路径,lcd 切换本地路径
  • chmod 改变远程文件属性。
  • close 关闭连接。
  • ls 和 cls 都是列出文件信息,但是前者是依照服务器反馈,后者会依照自己的格式。另外 nlist 仅仅列出文件名,不列其他的信息。
  • command 忽略 alias 执行命令。
  • debug 改变 debug level 并输出到指定文件。
  • echo,man page 里面居然写 guess what it does。
  • eval 一般都是用来执行某个命令,可以提供指定格式(-f)
  • exit,可加 bg 表示退出后强制在后台下载,top 是把登录 shell 也退出了,kill 是杀死未完成任务。
  • fg 就是 wait 的 alias,表示在前台等候前一个命令终止。
  • find 和 ls -R 类似,但是如果服务器不支持 ls -R 可以用 find。
  • get 和 put 是 ftp 里面的基本命令,用于下载或者上传单一一个文件。
  • glob 将一个 pattern 转换后传给一个命令,基本用法是 glob command pattern
  • jobs 列出现在执行的任务。
  • kill 杀死指定任务,或者 kill all 杀死所有的。
  • pwd 和 lpwd 显示远程和本地的当前工作目录。
  • mirror 用于同步远程和本地的文件/目录,可以从远程同步到本地,也可以从本地同步到远程(-R),可以用 -i 指定下载的文件或者 -x 排除某些文件。
  • module 加载模块。
  • mkdir 创建目录。
  • more 类似 cat 根据 PAGER 设定分页。
  • mput 和 mget 使用 wildcard 上传或者下载文件。
  • mrm 实际上是 glob rm 的 alias。
  • mv 重命名
  • open 连接某个站点。
  • pget 使用几个连接下载文件。
  • quote 直接发送协议里面的命令,如 http 请求等
  • reget 和 get -c 一样,reput 和 put -c 一样;rels、renlist 重新生成 cache。
  • rm 删除文件。rmdir 删除目录。
  • repeat 可以用于反复执行某个命令。
  • set 设置变量。
  • scache 列出 cached 的 session 或者切换 session。
  • sleep 指定时间并退出。
  • site 执行 site_cmd。
  • source 执行一个文件里面的命令。
  • user 设定登录用户和密码。
  • version 获取版本号。
  • zcat 和 zmore 是调用 zcat 和 zmore 显示压缩文件内容。

下面看看 lftp 的配置,一般系统配置文件放在 /etc/lftp.conf,用户自己的放在 ~/.lftprc 或者 ~/.lftp/rc。一般里面用 alias 指定一些常用的命令,set 设定某些变量值,debug 打开调试状态等。set -a 会显示所有的设置,这里仅仅写一些常用的变量,其他的请参考 man page:
  • bmk:save-passwords (boolean) 是否保存站点的登录密码。
  • cmd:move-background (boolean) 默认状态下退出是否进入后台。
  • cache:size (number) 设置 cache 大小。
  • dns:order (list of protocol names) 设置查询 DNS 顺序,默认是先 inet6 后 inet。
  • file:charset (string) 存盘文件名编码方式。
  • ftp:anon-pass 匿名用户的密码
  • ftp:passive-mode (boolean) 所谓 passive mode 就是客户端打开端口反向连接 server 传输。
  • ftp:port-range (from-to) 设置打开 PASV 模式使用的端口范围。
  • http:proxy 设置 http 的代理。
  • net:limit-rate (bytes per second) 限制下载速度。
  • net:reconnect-interval-max (seconds) 重连时间。
  • pget:default-n (number) 使用 pget 分割的块数。