方式一:scp

什么是scp: scp 命令是 SSH中最方便有用的命令了,scp就是secure copy,是用来进行远程文件拷贝的。数据传输使用 ssh,并且和ssh 使用相同的认证方式,提供相同的安全保证。 与rcp 不同的是,scp 在需要进行验证时会要求你输入密码或口令。

速度:刚开始的时候33M/s 持续3分钟左右就跌落到3M左右的传输速度


方式二:rsync

什么是rsync: rsync是rcp的替代品之一,rsync 是一款高效的远程数据备份和镜象工具,

速度:无响应


方式三:wget

什么是wget: wget 是一个经由 GPL 许可的可从网络上自动获取文件的自由软件包。它是一个非交互式的命令行工具。支持 HTTP,HTTPS 和 FTP 协议,支持代理服务器以及断点续传功能。 wget 可实现递归下载,即可跟踪 HTML 页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构,实现远程网站的镜像。在递归下载时,wget 将页面中的超级链接转换成指向本地文件,方便离线浏览。由于非交互特性,wget 支持后台运行,用户在退出系统后,仍可继续运行。功能强大,设置方便简单。

速度:刚开始的时候50M/s 持续3分钟左右就跌落到3M左右的传输速度


方式四;axel

与wget方式类似,只是wget是单线程,axel可以是多线程,速度可以比wget翻几倍

1、获得Axel

32位系统:

wget -c http://www.centoscn.com/tool/axel-2.4-1.el5.rf.i386.rpm rpm -ivh axel-2.4-1.el5.rf.i386.rpm #安装


64位系统:

wget -c http://www.centoscn.com/tool/axel-2.4-1.el5.rf.x86_64.rpm
rpm -ivh axel-2.4-1.el5.rf.x86_64.rpm  #安装

2、使用参数参考

选项 相应功能
-n 指定线程数
-s 限制最大速度(带宽)
-q 静默模式
-o 文件另存为(到别的目录)
--help 显示帮助信息
--version 显示版本信息


3、使用案例

限制最大为100kb带宽下载《putty.exe》

axel -s 102400 http://www.centoscn.com/putty.exe  
#102400为每秒字节数



方式五;bbcp

什么是bbcp: bbcp 是由SLAC(斯坦福直线加速器中心)的Andy Hanushevsky创立的点对点网络文件拷贝工具。经过简单测试,发现速度比 scp 快了10倍左右,因此推荐大家采用bbcp来取代scp等老家伙 :)

速度:针对20G的文件进行了测试,测试下来平均下来速度在21M左右,耗时16分钟

安装bbcp【两端都要安装】

wget http://www.slac.stanford.edu/~abh/bbcp/bin/amd64_rhel60/bbcp -O /usr/bin/bbcp

chmod +x /usr/bin/bbcp


来自http://heylinux.com/archives/2984.html的中文参数解释:

-k 保留所有未传输完成的文件,并允许在重试时进行覆盖

-a 保留checkpoint信息用于校验文件的完整性

-r 递归传输指定路径下的所有文件

-P 2 每两秒显示传输的进程

-V 打印调试信息

-f 强制清除远程主机上传输失败的数据

-w 设置Disk (I/O) buffers

   算法为(window = netspeed/8*RTT = 1000Mb/8*74ms = 1000/1000/8*74 = 9.25 M)

   对应链接:http://www.slac.stanford.edu/~abh/bbcp/#_Toc332986061

-s 16 设置并发数为16

      参考官方建议:http://www.slac.stanford.edu/~abh/bbcp/#_Streams_(-s)

-T "ssh -x -a -p 2222 -oFallBackToRsh=no -i /home/dong.guo/.ssh/id_rsa -l heydevops heylinux.com /usr/bin/bbcp" 

   指定远端主机的认证方式:

   采用-p 2222指定端口;

   设置-oFallBackToRsh=no减少ssh响应时间;

   设置-i /home/dong.guo/.ssh/id_rsa指定SSH Key;

   设置-l heydevops指定登陆用户;

   heylinux.com为远程主机地址;

   /usr/bin/bbcp为远程主机的bbcp路径;