[20191202]加快scp拷贝速度.txt
--//以前写的http://blog.itpub.net/267265/viewspace-2138649/=>[20170508]加快scp拷贝速度.txt
--//如果结合xargs -P参数可以更快.scp加入 -c arcfour参数.
--//当然首先你给避免输入口令,机器之间要相互认证.
1.方法一:scp +xargs
# time ls -1 *.dbf | xargs -P 5 -I{} scp -c arcfour {} root@192.168.xx.xx:/tmp
tea01.dbf 100% 6152KB 6.0MB/s 00:00
T01.dbf 100% 40MB 40.0MB/s 00:01
temp01.dbf 100% 150MB 50.0MB/s 00:03
undotbs02.dbf 100% 16MB 16.0MB/s 00:01
undotbs03.dbf 100% 16MB 16.0MB/s 00:01
example01.dbf 100% 346MB 49.5MB/s 00:07
users01.dbf 100% 400MB 80.0MB/s 00:05
system01.dbf 100% 770MB 20.3MB/s 00:38
undotbs01.dbf 100% 1475MB 23.1MB/s 01:04
sysaux01.dbf 100% 2800MB 24.4MB/s 01:55
real 1m55.522s
user 1m13.889s
sys 0m33.552s
--//主要问题是sysaux01.dbf最大,如果排序执行,首先执行最大的文件看看.
# time ls -S1 *.dbf | xargs -P 5 -I{} scp -c arcfour {} root@192.168.xx.xx:/tmp/xxx
example01.dbf 100% 346MB 19.2MB/s 00:18
users01.dbf 100% 400MB 19.1MB/s 00:21
T01.dbf 100% 40MB 13.3MB/s 00:03
temp01.dbf 100% 150MB 16.7MB/s 00:09
undotbs02.dbf 100% 16MB 8.0MB/s 00:02
undotbs03.dbf 100% 16MB 16.0MB/s 00:00
tea01.dbf 100% 6152KB 3.0MB/s 00:02
system01.dbf 100% 770MB 24.1MB/s 00:32
undotbs01.dbf 100% 1475MB 32.1MB/s 00:46
sysaux01.dbf 100% 2800MB 51.9MB/s 00:54
real 0m54.662s
user 1m4.611s
sys 0m29.232s
--//节约一半时间.打开10个并行看看.
# time ls -S1 *.dbf | xargs -P 10 -I{} scp -c arcfour {} root@192.168.xx.xx:/tmp/xxx
tea01.dbf 100% 6152KB 6.0MB/s 00:01
undotbs03.dbf 100% 16MB 16.0MB/s 00:01
undotbs02.dbf 100% 16MB 16.0MB/s 00:01
T01.dbf 100% 40MB 20.0MB/s 00:02
temp01.dbf 100% 150MB 21.4MB/s 00:07
users01.dbf 100% 400MB 40.0MB/s 00:10
example01.dbf 100% 346MB 19.2MB/s 00:18
system01.dbf 100% 770MB 26.6MB/s 00:29
undotbs01.dbf 100% 1475MB 35.1MB/s 00:42
sysaux01.dbf 100% 2800MB 51.9MB/s 00:54
real 0m54.456s
user 1m2.177s
sys 0m26.754s
--//基本差不多.
# time ls -S1 book/*.dbf | xargs -P 10 -I{} scp -o CompressionLevel=5 -C -c arcfour256 {} root@192.168.xx.xx:/tmp/xxx
tea01.dbf 100% 6152KB 6.0MB/s 00:01
undotbs02.dbf 100% 16MB 16.0MB/s 00:01
undotbs03.dbf 100% 16MB 16.0MB/s 00:01
T01.dbf 100% 40MB 20.0MB/s 00:02
temp01.dbf 100% 150MB 50.0MB/s 00:03
example01.dbf 100% 346MB 49.5MB/s 00:07
users01.dbf 100% 400MB 22.2MB/s 00:18
system01.dbf 100% 770MB 22.0MB/s 00:35
undotbs01.dbf 100% 1475MB 22.4MB/s 01:06
sysaux01.dbf 100% 2800MB 27.5MB/s 01:42
real 1m42.486s
user 3m46.769s
sys 0m11.963s
*/
--//效果并不明显,问题在与sysaux01.dbf太大了.
2.方法2: tar+pigz+ssh
--//注意两边都要安装pigz:
# tar cvf - book -I pigz | ssh oracle@192.168.xx.xx tar xvf - -I pigz -C /tmp/xxx
--//有一些tar版本不支持-I参数使用--use-compress-program pigz代替.
# tar cvf - book --use-compress-program pigz | ssh oracle@192.168.xx.xx tar xvf - --use-compress-program pigz -C /tmp/xxx
--//注意一点tar f参数后面的-千万不要忘记写!!例子:
# time tar cvf - book/*.dbf --use-compress-program pigz | ssh root@192.168.xx.xx tar xvf - --use-compress-program pigz -C /tmp/xxx
# time tar cf - book/*.dbf --use-compress-program pigz | ssh root@192.168.xx.xx tar xvf - --use-compress-program pigz -C /tmp/xxx
book/example01.dbf
book/sysaux01.dbf
book/system01.dbf
book/T01.dbf
book/tea01.dbf
book/temp01.dbf
book/undotbs01.dbf
book/undotbs02.dbf
book/undotbs03.dbf
book/users01.dbf
OK, has trailing junk which was ignored
real 0m31.753s
user 7m53.904s
sys 0m17.523s
*/
--//这种方式非常考验网络,如果网络或者交换机不给力,整个网络都会有影响.
--//再次提醒tar f参数后面的 - 千万不要忘记写!!