lftp 是一款非常著名的字符界面的文件传输工具。功能强大的下载工具,它支持访问文件的协议: ftp, ftps, http, https, hftp, fish.(其中ftps和https需要在编译的时候包含openssl库)。llftp的界面非常想一个shell: 有命令补全,历史记录,允许多个后台任务执行等功能,使用起来非常方便。它还有书签、排队、镜像、断点续传、多进程下载等功能。

LFTP is sophisticated ftp/http client, file transfer program supporting a number of network protocols. Like BASH, it has job control and uses readline library for input. It has bookmarks, built-in mirror, can transfer several files in parallel. It was designed with reliability in mind. LFTP is free software.

昨天需要同步不同服务器上的代码,但是使用默认的ftp工具不可以递归的下载文件夹,上网搜到了这个软件,感觉不错,所以写下自己的操作步骤,希望对大家有所帮助。

1、下载lftp安装包
我下载的版本是:lftp-4.0.1.tar.bz2,下载地址: http://download.chinaunix.net/down.php?id=26738&ResourceID=5628&site=1

tar.bz2后缀的安装包,解压使用“bzip2 -d  lftp-4.0.1.tar.bz2”,生成一个“lftp-4.0.1.tar”tar包,然后释放里面的文件,操作步骤如下:

[/opt/opthb/work/ymm/OpenSource]$bzip2 -d lftp-4.0.1.tar.bz2
[/opt/opthb/work/ymm/OpenSource]$tar -xzvf lftp-4.0.1.tar
[/opt/opthb/work/ymm/OpenSource]$ls
lftp-4.0.1/

当然,使用tar的-j参数也是可以解压的,与bzip2的区别是,使用“bzip2”的方法解压时,源文件不再存在,而使用“tar -xjvf”,则会保留源文件,如下:

[/opt/opthb/work/ymm/OpenSource]$ls
lftp-4.0.1.tar.bz2

下面是man手册中对于tar中中参数的解释:

-j, --bzip2filter the archive through bzip2

我们可以看到,使用“-j”参数,使用的依旧是“bzip2”进行解压的。

2、安装lftp
修改configure文件执行权限,并生成makefile文件
使用"configure"命令检查并配置安装需要的系统环境,并生成安装配置文件。可以通过“--prefix 路径”来执行最终生成的库的路径。
#修改最终生成的库的路径为“/opt/opthb/work/ymm/usr/local”

[/opt/opthb/work/ymm/OpenSource/lftp-4.0.1]$ ./configure --prefix=“/opt/opthb/work/ymm/usr/local”

生成所在环境的makefile之后,编译源文件,并生成可执行文件
命令如下:

[/opt/opthb/work/ymm/OpenSource/lftp-4.0.1]$ make

使用“make install”安装编译过的文件

[/opt/opthb/work/ymm/OpenSource/lftp-4.0.1]$ make install

安装成功之后,就会在指定的目录“/opt/opthb/work/ymm/usr/local”下面生成需要的可执行文件,如下:

[/opt/opthb/work/ymm/OpenSource/lftp-4.0.1]$ cd /opt/opthb/work/ymm/usr/local
[/opt/opthb/work/ymm/usr/local]$ls
bin  etc  lib  share
[/opt/opthb/work/ymm/usr/local]$ls bin
help  lftp  lftpget

通过以上步骤,我们就可以是使用lftp了。
如果我们希望在其他路径也可以使用lftp的话,只需要把bin路径添加到环境变量PATH中就可以了,如下:

[/opt/opthb/work/ymm/usr/local]$lftp
-bash: lftp: command not found
[/opt/opthb/work/ymm/usr/local]$export PATH=/opt/opthb/work/ymm/usr/local/bin:${PATH}
[/opt/opthb/work/ymm/usr/local]$lftp
lftp :~> 

3、登录远程服务器
登录远程服务器的方式和普通ftp登录一样,如下:

[/opt/opthb/work/ymm/usr/local]$lftp
lftp :~> open 172.21.0.21
lftp 172.21.0.21:~> user billing_dx
Password:
lftp billing_dx@172.21.0.21:~>

4、使用镜像进行文件的传输
通过help可以查看lftp所支持的所有命令的使用方法

lftp billing_dx@172.21.0.21:~/work/ymm> help mirror
Usage: mirror [OPTS] [remote [local]]Mirror specified remote directory to local directory-c, --continue         continue a mirror job if possible-e, --delete           delete files not present at remote site--delete-first     delete old files before transferring new ones-s, --allow-suid       set suid/sgid bits according to remote site--allow-chown      try to set owner and group on files--ignore-time      ignore time when deciding whether to download-n, --only-newer       download only newer files (-c won't work)-r, --no-recursion     don't go to subdirectories-p, --no-perms         don't set file permissions--no-umask         don't apply umask to file modes-R, --reverse          reverse mirror (put files)-L, --dereference      download symbolic links as files-N, --newer-than=SPEC  download only files newer than specified time-P, --parallel[=N]     download N files in parallel-i RX, --include RX    include matching files-x RX, --exclude RX    exclude matching filesRX is extended regular expression-v, --verbose[=N]      verbose operation--log=FILE         write lftp commands being executed to FILE--script=FILE      write lftp commands to FILE, but don't execute them--just-print, --dry-run    same as --script=-When using -R, the first directory is local and the second is remote.
If the second directory is omitted, basename of first directory is used.
If both directories are omitted, current local and remote directories are used.

使用mirror命令可以进行进行文件夹的下载,配合着lcd命令(本地路径),就可以下载自己需要到文件到指定目录:

lftp billing_dx@172.21.0.21:~> lcd /opt/opthb/work/ymm/test/
lcd ok, local cwd=/opt/opthb/work/ymm/test

mirror 文件夹,可以递归下载该文件夹到lcd指定的目录,如下:

lftp billing_dx@172.21.0.21:~/work/ymm> mirror  DataGen/
Total: 3 directories, 15 files, 0 symlinks
Modified: 1 file, 0 symlinks
195 bytes transferred

mirror -R上传文件夹(不可以单独的文件)

lftp billing_dx@172.21.0.21:/tmp/temp> mirror -R ymm.txt #上传文件出错
mirror: Access failed: /opt/opthb/work/ymm/test/ymm.txt: Not a directory
1 error detectedlftp billing_dx@172.21.0.21:/tmp/temp> mirror -R test       #上传目录正常
Total: 38 directories, 289 files, 0 symlinks
New: 289 files, 0 symlinks
3047762 bytes transferred in 2 seconds (1.89M/s)
To be removed: 0 directories, 1 file, 0 symlinks

使用断点续传功能和多线程处理的方法
mirror -c --parallel=线程数目 远程路径 本地路径

lftp billing_dx@172.21.0.21:/tmp/temp> mirror -c --parallel=2 sub sub2
Total: 1 directory, 4 files, 0 symlinks
New: 4 files, 0 symlinks

如果本地路径不存在,会自动创建指定命名的目录。
使用上述方法,对于文件数目比较多的情况下,例如用户目录的迁移是很有效的。

而且,我发现通过ftp下载的文件,文件的可执行权限会被去掉,而通过lftp下载的文件,文件的可执行文件会被保留。
 
扩展阅读: http://download.chinaunix.net/download/0006000/5628.shtml    lftp介绍和软件下载
            http://blog.csdn.net/xiaotuni/article/details/2099609        tar.bz2文件解压
            http://bbs.chinaunix.net/thread-1325666-1-1.html             lftp下载整个文件夹
            http://blog.csdn.net/helloworldtoo/article/details/7022291   lftp命令介绍

开源软件之lftp的使用相关推荐

  1. 开源软件License汇总

    开源软件英文为Open Source Software,简称OSS,又称开放源代码软件,是一种源代码可以任意获取的计算机软件,这种软件的著作权持有人在软件协议的规定之下保留一部分权利并允许用户学习.修 ...

  2. 提高mysql性能的开源软件

    今天发现一个开源软件,看介绍可以提高mysql的性能,这个东西就是Google的开源TCMalloc库,于是拿来装了下看看效果. 这个软件下载地址是:http://code.google.com/p/ ...

  3. 算法实现太难了?机器学习也需要开源软件

    作者 | Soren Sonnenburg等 译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 导读:开源工具已经趋于成熟,这使其能构建大规模的自然场景下的系统.与此同时,机器学习 ...

  4. 视频数据处理方法!关于开源软件FFmpeg视频抽帧的学习

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 视频文件是多媒体数据中比较常见的一种,也是入门门槛比较高的一个领域.视频数据相关的领域 ...

  5. 在云中利用开源软件进行开发以提高创新能力

    企业可以在自己的云平台上利用开源软件开发应用程序以提高创新能力,而无需为创新支付更多的费用. 企业可以在自己的云平台上利用开源软件开发应用程序以提高创新能力,而无需为创新支付更多的费用. 在大多数企业 ...

  6. 开源软件与商业软件的选择

    这篇文章我已经思考和构思很久了.一直在写与不写之间犹豫.想写,只是希望自己能做个抛砖引玉的引子,能够引起大家足够的思考.不写,可以说不敢写,是因为自己阅历有限,很多地方也没有搞明白.而且开源软件和商业 ...

  7. 银行选型和排坑实战:用开源软件自建分布式数据服务平台

    来自:DBAplus社群 之前设计篇讲了数据拆分的方式.场景.优缺点以及实施步骤,偏方法与理论.技术篇会介绍分布式数据服务平台设计与实现,讲述如何通过技术手段解决数据拆分带来的各种问题,以及各中间件的 ...

  8. 2014年最热门的国人开发开源软件TOP100

    2014年最热门的国人开发开源软件TOP100 不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多 ...

  9. 开源软件:信息共赢和开放心态

    每本软件的著作里,都会提到"开源软件",多数都会往哲学的层面上去解释,相当的形而上.我想,开源这回事,不就是大家把代码传到网上,给人下载学习,之后有了Linux,Apache一系列 ...

  10. 独家 | 建立软件的经济学分析框架,浅议开源软件的经济学特性(附图解)

    人类社会正在加速数字化.一个显而易见的事实是,人们生活.工作的方方面面都离不开各种各样的软件.不久以前,人们还不知道什么是软件:从今往后,软件正在吞噬整个世界[https://a16z.com/201 ...

最新文章

  1. Android 判断某个服务是否正在运行
  2. python __setattr__ , __getattr__
  3. 战地1如何修改服务器地址,《战地1》服务器加入方法一览
  4. C语言掉电保存的变量,求解释,怎么能让程序里的变量在关闭后依然保存呢?...
  5. Linux select TCP并发服务器与客户端编程
  6. java怎么更改id名_java - 尽管ID已更改为_id,但列'_id'不存在
  7. 用 vue2 和 webpack 快速建构 NW.js 项目(1)
  8. [转]AIX平台下如何增加用户和组的名称长度
  9. 2014第7周1Web安全概念学习
  10. 活动现场控制管理利器--节目文件,会议文件,PowerPoint文件,多媒体文件编辑组织管理播放平台--双屏版软件,欢迎下载使用.
  11. JSONArray.fromObject(); 引入问题
  12. AMOS分析技术:测量模型分析;聊聊验证性因子分析(CFA)与探索性因子分析(EFA)的异同点
  13. python分段函数图像画法_特殊分段函数的图像画法
  14. Algorithms 学习笔记——1.1
  15. 基于python的招聘网站分析
  16. 阿达的红外射频遥控盒子(一)
  17. Clickhouse 踩坑之旅 ---- MergeTree不合并分区的问题
  18. PG据库备份与恢复实验 (PITR)
  19. CAS Server
  20. NOI / 1.7编程基础之字符串题目排名状态提问15:整理药名

热门文章

  1. 3d旋转图片立方体特效
  2. 用c++从头开始实现决策树
  3. 如何写一篇数据分析报告3 - 分析背景是什么
  4. X310系列USRP使用LAN口MATLAB控制方法
  5. SaaS(软件即服务)的魅力
  6. 【学术报告】几经沉浮,人工智能(AI)前路何方?
  7. html css动漫素材,66种特效的CSS3动画库animate.css
  8. 计算机专业参考文献 文库,计算机类专业毕业论文参考文献大全.docx
  9. 看看月明光彩照入东 水浒
  10. C++ “system“的详解