最近在工作中,有大量不超过70兆的文件要在服务器之间传输,开始时采用了scp传输,后来发现scp性能太差,传输速度太慢,因此又迭代使用了bbcp(命令与scp类似,改动量小).
bbcp的官网: https://www.slac.stanford.edu/~abh/bbcp/
下载地址: https://www.slac.stanford.edu/~abh/bbcp/bin/
源码地址: git clone http://www.slac.stanford.edu/~abh/bbcp/bbcp.git
bbcp的安装极其简单,在下载bbcp后,将其上传到/usr/bin目录下即可使用.由于scp是单线程,导致传输速度只有不超过70MB/s,而使用bbcp后实测已经达到硬盘写入速度的上限220MB/s,虽然仍然未达到带宽上限,但瓶颈已经在于硬件.bbcp命令示例:
bbcp -r -f -s 16 root@192.168.1.2:/home/ceshi/ /home/
bbcp [ options ] [ srcspec [ . . . ] ] snkspec
srcspec: [[sid@]shost:]source [ srcspec ]
snkspec: [tid@]thost:]target
options:
{--compress | -c} [lvl] {--config | -C} fname
{--force | -f} {--infiles | -I} fname
{--help | -h} {--keep | -k}
{--license | -$} {--logfile | -l} logfn
{--mkdir | -A} {--mode | -m} mode
{--omit | -O} {--preserve | -p}
{--progress | -P} sec {--ptime | -~}
[--readable | -+} {--recursive | -r}
{--symlinks | -@} slarg {--verbose | -v}
{--version | -#} {--windowsz | -w} [=]wsz
[ advanced ] --
------------------------------------------------------
mode: dmode/ | fmode | dmode/*fmode*
slarg: follow | keep | ignore
shost: hostname | [*ipv6addr*] | ipv4addr
thost: hostname | [*ipv6addr*] | ipv4addr
以上是bbcp的参数,解释之前的例子
bbcp -r -f -s 16 root@192.168.1.2:/home/ceshi/ /home/
从192.168.1.2的/home/ceshi/下载文件到/home/中
其中-r执行递归复制,空目录和符号链接将被忽略。-r选项与-E选项互斥。
默认情况下,bbcp复制的目标目录中有相同文件,bbcp则会失败,使用-f参数则可以强制覆盖目标文件
-s设置用于传输的并行线程数量
若要免密传输,参考scp的使用