当前位置: 首页 > 工具软件 > bbcp > 使用案例 >

实测bbcp多线程文件拷贝工具

袁鸿达
2023-12-01

bbcp是由SLAC(斯坦福直线加速器中心)的Andy Hanushevsky创立的点对点网络文件拷贝工具。

1、安装

访问bbcp的主页:http://www.slac.stanford.edu/~abh/bbcp/,下载对应二进制版本或者源码,如果是源码,就需要自己编译。

这里直接下载二进制文件
源服务器和目标服务器都需要安装bbcp!
wget http://www.slac.stanford.edu/~abh/bbcp/bin/amd64_rhel60/bbcp -O /usr/local/bin/bbcp && chmod +x /usr/local/bin/bbcp

注意:如果你的服务器启用防火墙了,注意需要开放 5031 端口。例如,要从 172.16.66.65 拷贝文件到 172.16.66.66,则目标服务器上做如下规则:
iptables -A INPUT -s 172.16.66.65 -p tcp --dport 5031 -j ACCEPT

源服务器上不需要添加相应的规则。

 

2、测试

本次测试都是拷贝test.tar.gz文件。

du -sb test.tar.gz
1863814120 test.tar.gz

du -sh test.tar.gz
1.8G test.tar.gz

2.1 测试scp

time scp -P 1222 test.tar.gz ddroot@172.16.66.66:/tmp/

ddroot@172.16.66.66's password:
test.tar.gz                                100%  1777MB  63.5MB/s  00:28

real 0m28.658s
user 0m4.832s
sys 0m4.113s

拷贝耗时约28.6s

2.2 测试 bbcp

time /usr/local/bin/bbcp -4 -k -a -r -F -v -P 2 -w 9m -s 16 -T 'ssh -p 1222 -x -a -oFallBackToRsh=no %I -l %U %H /usr/local/bin/bbcp' test.tar.gz ddroot@172.16.66.66:/tmp/
ddroot@172.16.66.66's password:
bbcp: Indexing files to be copied...
bbcp: Copying 0 files and 0 links in 0 directories.
bbcp: Appending to /tmp/test.tar.gz at offset 0
bbcp: 171110 16:32:20 12% done; 135.9 MB/s, avg 135.9 MB/s
bbcp: 171110 16:32:22 22% done; 95.0 MB/s, avg 113.0 MB/s
bbcp: 171110 16:32:24 33% done; 98.7 MB/s, avg 107.9 MB/s
bbcp: 171110 16:32:26 41% done; 66.5 MB/s, avg 96.9 MB/s
bbcp: 171110 16:32:28 46% done; 45.4 MB/s, avg 86.2 MB/s
bbcp: 171110 16:32:30 52% done; 51.3 MB/s, avg 80.1 MB/s
bbcp: 171110 16:32:32 59% done; 65.7 MB/s, avg 78.0 MB/s
bbcp: 171110 16:32:34 64% done; 46.4 MB/s, avg 74.0 MB/s
bbcp: 171110 16:32:36 70% done; 49.9 MB/s, avg 71.2 MB/s
bbcp: 171110 16:32:38 75% done; 48.1 MB/s, avg 68.8 MB/s
bbcp: 171110 16:32:40 83% done; 65.5 MB/s, avg 68.5 MB/s
bbcp: 171110 16:32:42 87% done; 42.4 MB/s, avg 66.3 MB/s
bbcp: 171110 16:32:44 94% done; 62.0 MB/s, avg 66.0 MB/s
File /tmp/test.tar.gz created; 1863814120 bytes at 65.3 MB/s
1 file copied at effectively 60.3 MB/s

real 0m29.504s
user 0m0.062s
sys 0m1.383s

拷贝耗时约29.5s

从上面的测试结果来看bbcp并未传闻的比scp快多少倍。


参数详解:
-4 使用ipv4 IP地进行传输
-k 保留所有未传输完成的文件,并允许在重试时进行覆盖,使用-f后即使加了-k也会全部重传,一般与-a一起使用,默认不使用-k时当传输未完成就中断传输时会删除没有传输完的目标文件
-a 保留checkpoint信息用于校验文件的完整性
-r 递归传输指定路径下的所有文件
-c 使用压缩减少网络上传输的字节但需要额外的CPU资源,如果CPU资源不足,性能会非常差。bbcp使用zip对数据进行压缩传输压缩级别1-9,1速度最快,9最大压缩率速度最慢
-d 多目录复制,可以使用多个源以空格隔开。如:/home/ddroot/data dir1/data1 dir2/data2
-P 2 每两秒显示传输的进程
-v 显示拷贝信息
-V 打印调试信息
-f 强制清除远程主机上传输失败的数据
-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 1222 -oFallBackToRsh=no -i /home/ddroot/.ssh/id_rsa -l ddroot 172.16.66.66 /usr/bin/bbcp"
指定远端主机的认证方式:
采用-p 1222指定端口;
设置-oFallBackToRsh=no减少ssh响应时间;
设置-i /home/ddroot/.ssh/id_rsa指定SSH Key;
设置-l ddroot指定登陆用户;
172.16.66.66为远程主机地址;
/usr/bin/bbcp为远程主机的bbcp路径;
--port pn1 指定接收数据端口,默认5031
-Z pn1:pn2 指定接收数据端口范围


更多详细信息请查看:Using BBCP 和上面提到的bbcp主页。
http://pcbunn.cithep.caltech.edu/bbcp/using_bbcp.htm
http://www.slac.stanford.edu/~abh/bbcp/

转载于:https://www.cnblogs.com/ddroot/p/7815552.html

 类似资料: