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

小结:

  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选项指定目标路径。

lftp的用法的更多相关文章

  1. LINUX SHELL脚本攻略笔记[速查]

    Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述 ...

  2. linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)(zz)

    linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl) 分类: linux2011-10-10 13:21 8773人阅读 评论(1) 收藏 举 ...

  3. 【转载】linux lftp命令 详解

     站在前辈的肩上,别人会的你要尽快的学会练好!   lftp比ftp要好用,mget的时候,迹象要比较明显的迹象,比如下载进度!     linux lftp命令   1.登录ftp代码:lftp 用 ...

  4. lftp

    linux安装FTP工具 lftp及使用教程 来源:网络 发布时间:2013-05-24 15:21 字体:[大  中  小] 点击2510次 linux下可以直接通过FTP命令进行ftp上传下载,不 ...

  5. Lftp 简单使用步骤

    有一用户需要在Linux上面将数据备份至存储上面,但是不支持挂载. 只可以FTP. 找了下,Lftp 这款FTP Client 满足用户的需求. 相关资料参考:http://blog.chinauni ...

  6. lftp命令详解

    lftp.sh自动上传脚本: #!/bin/bash echo -e "\nScript start at \033[43;35m `date "+%H:%M:%S"` ...

  7. 【linux】下载命令lftp\sftp\wget

    sftp sftp(安全文件传输协议)与ftp 有着几乎一样的语法和功能.FTP 为 SSH的一部份,是一种传输档案至 Blogger 伺服器的安全方式.它并不使用ftp守护进程(ftpd或wu-ft ...

  8. Linux系统中使用lftp命令实现FTP上传下载

    Linux 下常用的操作命令有 ftp. lftp 和 sftp,图形化界面非常好用的有 FileZilla.不过在服务器命令界面中,lftp使用比较方便,功能也比ftp更加强大.lftp的界面很像L ...

  9. linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)

    因为工作原因,需要经常在不同的服务器见进行文件传输,特别是大文件的传输,因此对linux下不同服务器间数据传输命令和工具进行了研究和总结.主要是rcp,scp,rsync,ftp,sftp,lftp, ...

随机推荐

  1. Linux 3.2中回写机制的变革

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://alanwu.blog.51cto.com/3652632/1109952 wri ...

  2. mui开发app之cropper裁剪后上传头像的实现

    在大多数app项目中,都需要对用户头像的上传,之前做web开发的时候,我主要是通过input type=file的标签实现的,上传后,使用php对图片进行裁剪,这种方式比较传统简单. 此次app开发中 ...

  3. windows下使用IIS的ARR实现站点的负载均衡

    1)    目的: 访问localhost:18066 对下边两个端口负载 localhost:18098 localhost:18099 2)    手段: 1.通过nginx 2.通过iis的AR ...

  4. 产品经理学Python:逻辑判断与运算符

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  5. 分针网—IT教育: Html / CSS常见问题的解决方案

    1. 解决Safari下input光标过大   2. 设置浮层   3. CSS绘制三角形   4. 清除浮动   1) 浮动元素父级添加样式   2) 父元素后添加伪元素     3) 同样可以使用 ...

  6. python-day 练习1

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''需求: a. 元素分类 有如下值集合 v1 = [11,22,33,44,55,66,77,88,99,90 ...

  7. MySQL开发总结(有点长..耐心看)

    一.理解MySQL基本概念 1.MySQL软件:MySQL实际上就是一软件,是一工具,是关系型数据库管理系统软件 2.MySQL数据库:就是按照数据结构来组织.存储和管理数据的仓库 3.MySQL数据 ...

  8. ubuntu16.04 编译运行 LSD-SLAM

    下载编译LSDSLAM,可能会出现 CreateGlutWindowAndWind is not a member of pangolin 以及 该函数参数报错的问题: 原因是在新的pangolin版 ...

  9. Jdk1.6 JUC源码解析(1)-atomic-AtomicXXX

    转自:http://brokendreams.iteye.com/blog/2250109 功能简介: 原子量和普通变量相比,主要体现在读写的线程安全上.对原子量的是原子的(比如多线程下的共享变量i+ ...

  10. php高性能开发阅读笔记

    1.http请求与响应的简单流程 上图简单的描述了一个http请求与响应的过程,首先是用户请求过程,这是该生命周期的第一部分,用户发起请求,经过路由器与ips网关和dns服务器(域名服务器),通过we ...