zoukankan      html  css  js  c++  java
  • lftp的用法

     lftp是Linux下的一个ftp工具,支持ftp, ftps, http, https, hftp, fish, sftp, file, bittorrent等协议(支持https 和 ftps,必须编译时和 openssl library 一起编译)。lftp 内建了 shell-like 的命令格式, 允许在背景同时执行多个命令(&)。所有背景执行的工作都是在同一个程序中(process), 能将前景执行的命令放到背景执行(Ctrl-z), 或从背景拿回前景执行(wait 或 fg), 甚至还可以经由上个命令的传回值来决定目前这个命令是否要执行(&& ||)。在结束 lftp 时, 如果还有程序执行中, lftp会将自己切换到no hup模式並放到背景执行,因此不必担心正在执行的任务会结束。

    1、配置

    在用lftp访问国内一些ftp服务器时,往往看到的中文是乱码,这是由于服务器和本地编码不一致造成的。我们只要在主目录下新建一个文件~/.lftprc或者~/.lftp/rc,并在其中加入以下内容:
    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"

    2、登录服务器

    //显示书签
    cb@127:~$ lftp -c bookmark list
    net ftp://ftp.net/
    lingBooks http://24.72.100.108/lingBooks/
    zdhz 23.65.2.16
     
    cb@127:~$ lftp zdhz
    lftp 23.65.2.16:~> user cb
    口令:
     
    //同时登录多个FTP服务器,使用slot设定别名,并在它们之间切换
    lftp cb@23.65.2.16:~> slot zdhz
    lftp zdhz cb@23.65.2.16:~> slot net
    lftp net cb@23.65.2.16:~> open ftp.net
    cd 成功, 当前目录=/
    lftp net ftp.net:/> slot zdhz
    lftp zdhz cb@23.65.2.16:~> slot net
    lftp net ftp.net:/>

    3、下载

    lftp zdhz cb@23.65.2.16:/> cd working/
    lftp zdhz cb@23.65.2.16:/working> lcd ~/tmp/
    lcd 成功, 本地目录=/home/cb/tmp
    lftp zdhz cb@23.65.2.16:/working> get kaiti.rar
    1782318 字节 已传输
     
    //指定下载文件的目标目录,需要每个文件之后用-o选项(小写),否则上传到服务器的当前目录
    lftp cb@23.65.2.16:/working> get kaiti.rar -o ~/tmp 指挥信息系统军事需求分析.doc -o ~/doc
    1806382 字节 已传输
    总共传输 2 个文件
     
    //使用通配符下载多个文件
    lftp zdhz cb@23.65.2.16:/working> mget *.doc
    202969 字节 已传输
    总共传输 6 个文件
     
    //指定下载的基目录(base),使用-O选项,注意是大写
    lftp zdhz cb@23.65.2.16:/> mget ebook/source* -O ~/tmp
    52511692 字节, 在 5 秒中传输完毕 (10.96M/s)
    总共传输 2 个文件
     
    lftp cb@23.65.2.16:/ebook> mget 十天学会PHP.rar 程序设计实践.rar -O ~/tmp/
    8004043 字节, 在 2 秒中传输完毕 (3.72M/s)
    总共传输 2 个文件
     
    //镜像下载整个目录
    lftp zdhz cb@23.65.2.16:/working> mirror network ~/tmp/
    全部: 1 个目录,9 个文件, 0 个符号链接
    新建: 9 个文件, 0 个符号链接
    1453557 字节 已传输
     
    //多线程下载, -o 选项指定下载的目标目录,注意是小写。
    lftp zdhz cb@23.65.2.16:/> pget -n 4 ebook/source1.pdf ebook/source2.pdf -o ~/tmp
    52514342 字节, 在 7 秒中传输完毕 (7.34M/s)

    4、上传

    //指定上传的目标目录需要每个文件之后用-o选项(小写),否则上传到服务器的当前目录
    lftp zdhz cb@23.65.2.16:/> put source1.pdf -o ebook/ source2.pdf -o ebook/ Linux命令大全.chm
    52866871 字节, 在 5 秒中传输完毕 (11.09M/s)
    总共传输 3 个文件
     
    //使用通配符上传多个文件,注意:使用-O参数指定上传的基目录,要大写
    lftp zdhz cb@23.65.2.16:/> mput source*.pdf -O ebook/
    52511692 字节, 在 4 秒中传输完毕 (11.14M/s)
    总共传输 2 个文件
     
    //镜像上传整个目录,可用于同步
    lftp zdhz cb@23.65.2.16:/> mirror -R ~/ebook/Linux/LFS/ ebook/
    全部: 15 个目录,137 个文件, 0 个符号链接
    新建: 137 个文件, 0 个符号链接
    4456290 字节, 在 6 秒中传输完毕 (688.9K/s)
    lftp zdhz cb@23.65.2.16:/> ls ebook/
    total 0
    drw-rw-rw- 1 user group 0 Sep 28 16:50 .
    drw-rw-rw- 1 user group 0 Sep 28 16:50 ..
    drw-rw-rw- 1 user group 0 Sep 28 16:50 LFS

    5、删除服务器上文件

    //删除多个文件
    lftp zdhz cb@23.65.2.16:/> rm ebook/source1.pdf Linux命令大全.chm
    rm 成功, 删除 2 个文件
     
    //删除整个目录
    lftp zdhz cb@23.65.2.16:/> rm -r ebook/
    rm 成功, 删除 `ebook/'
     
    //删除某个目录下的多个文件
    lftp zdhz cb@23.65.2.16:/> mrm ebook/*.pdf
    rm 成功, 删除 2 个文件

    6、任务队列

    对于那些只能一个IP只能登录一次的服务器,如果想同时下载多个不同目录下的文件,就只能一次下载一个,等到下载完了第一个才能再切换到别的目录去下载第二个, 这时 lftp 的 queue 派上用场了。
    lftp cb@23.65.2.16:/pub/Iso> queue
     
    lftp cb@23.65.2.16:/pub/Iso> jobs
    0 queue (ftp://cb@23.65.2.16)
    Queue is stopped.
     
    lftp cb@23.65.2.16:/pub/Iso> queue get rettcd.iso
     
    lftp cb@23.65.2.16:/pub/Iso> jobs
    0 queue (ftp://cb@23.65.2.16)
    Queue is stopped.
    Commands queued:
    1. get rettcd.iso
     
    lftp cb@23.65.2.16:/pub/Iso> queue mirror Linux/
     
    lftp cb@23.65.2.16:/pub/Iso> jobs
    0 queue (ftp://cb@23.65.2.16)
    Queue is stopped.
    Commands queued:
    1. get rettcd.iso
    2. mirror Linux/
     
    lftp cb@23.65.2.16:/pub/Iso> queue start
     
    lftp cb@23.65.2.16:/pub/Iso> jobs
    0 queue (ftp://cb@23.65.2.16)
    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

    7、命令行下载

    //多线程下载
    $ lftp -c 'pget -n $Thread_num -c $URL -o $SAVE_PATH' &
     
    //BitTorrent下载
    $ lftp -c 'torrent ubuntu-14.04-dvd-amd64.iso.torrent' &

    //镜像下载,使用pget,4线程下载每个文件,递归下载,断点续传

    $ lftp -c 'mirror -c -n -P -n=4 http://mirrors.neusoft.edu.cn/android/repository/ ~/tmp/'

    小结:

    1. 常用命令:cd, lcd, get, mget, put, mput, mirror, rm, mrm, pget, queue, jobs
    2. mget, mput, mrm可使用通配符*匹配多个文件
    3. 默认mirror:set-permissions on,则mirror 会拷贝文件和目录的(原有)权限,否则(off)利用文件系统创建文件和目录的规则重新设置文件目录的权限(文件666 & umask,目录777 & umask);和-p(或—no-perms)将该变量设置为off是等效的;建议在~/.lftprc中将该变量设置为off状态:set mirror:set-permission off
    4. -O指定mput和mget命令上传或下载的基目录,因此多个文件不用每个文件都使用-o选项指定目标路径。
  • 相关阅读:
    HTTP协议详解(真的很经典)
    几点建议,让Redis在你的系统中发挥更大作用
    Redis能干啥?细看11种Web应用场景
    Java中使用Jedis操作Redis
    java的锁机制——synchronized
    web开发中的两把锁之数据库锁:(高并发--乐观锁、悲观锁)
    一分钟教你知道乐观锁和悲观锁的区别
    $^,$@,$?,$<,$(@D),$(@F) of makefile
    linux shared lib 使用与编译
    makefile learning
  • 原文地址:https://www.cnblogs.com/pandachen/p/5373204.html
Copyright © 2011-2022 走看看