cp -C应该被认为只是一种方便.如果文件可以被显着压缩,那么最好首先在源上压缩它,传输压缩的表单,最后在目标上压缩
但是只是针对单个文件进行压缩如果是多个小文件最好用
tar -zcvf go1.10.tar ./
$scp go1.10.tar xiaoju@10.96.83.51:/home/xiaoju/goLang/src/github.com/go
使用ssh+tar 传输文件与scp比较
使用cat 输出文件
tar -zcvf - ./ |ssh posp@192.168.3.55 “cat >/home/posp/xxx.tar.gz
real 1m26.803s
user 1m21.459s
sys 0m5.323s
使用dd生成文件
tar -zcvf - ./ |ssh posp@192.168.3.55 “dd of=/home/posp/xxx.tar.gz
real 1m27.242s
user 1m21.475s
sys 0m5.840s
直接在传输的时候直接解压
tar -zcvf - ./ |ssh posp@192.168.3.55 “tar -zxvf - -C /home/posp/trans1”
real 1m27.242s
user 1m21.475s
sys 0m5.840s
使用Scp传输文件(没有压缩)
scp -r ./ posp@192.168.3.55:/home/posp/chenchen_test/trans1
real 6m54.000s
user 0m41.940s
sys 0m12.742s
ps: 因为空洞文件压缩后会非常小,没有压缩传输的话非常耗费时间
使用Scp命令本身的压缩参数 -C, 压缩后传输
scp -r -C ./ posp@192.168.3.55:/home/posp/chenchen_test/trans1
real 2m21.667s
user 1m45.134s
sys 0m11.294s
使用Scp + tar ,tar压缩后传输
tar -zcvf xxx.tar.gz ./
real 1m18.370s
user 1m17.027s
sys 0m4.867s
scp xxx.tar.gz posp@192.168.3.55:/home/posp/chenchen_test/trans1
real 0m41.054s
user 0m4.094s
sys 0m1.017s
总时间 :
real 1m59.424s
user 1m21.121s
sys 0m5.884s
总结:
ssh + tar 传输文件 速度比scp速度更快
ssh + tar 用dd 和 cat 写入文件的时候,速度并没有很大变化.(可能取决于当时系统的负载情况)
scp 压缩与不压缩速度差别很大
先使用tar打包压缩文件再传输,比使用scp命令本身压缩后传输快
注:
本文使用测试的传输文件目录大小4.8G 其中有2.5G通过dd 生成的zero文件dd if=/dev/zero of=file count=1 bs=1000000000(压缩与不压缩有很大差别).
如果传输的是大文件,如视频,音频,本身不可压缩很多,压缩与不压缩差距不大.
测试文件数量14140,文件数量多,但是大文件少.