同时运行多个 scp 线程

cae*_*say 12 linux centos scp multi-threading

同时运行多个 scp 线程:

背景:

我经常发现自己镜像了很多服务器文件,这些服务器文件中包含数千个1kb-3kb 的小文件。所有服务器都连接到 1Gbps 端口,通常分布在各种数据中心。

问题:

SCP 一个一个地传输这些小文件,这需要很长时间,我觉得我在浪费我拥有的美丽网络资源。

解决方案?:

我有一个想法;创建一个脚本,将文件分成相等的数量,并启动 5-6 个 scp 线程,理论上会快 5-6 倍,不是吗?但我没有任何 linux 脚本经验!

问题):

  • 是否有更好的解决方案来解决上述问题?
  • 是否已经存在这样的东西?
  • 如果没有,有没有人会给我一个开始,或者帮助我?
  • 如果不是 2 或 3,哪里是开始学习 linux 脚本的好地方?像 bash 或其他。

fak*_*ker 12

我会这样做:
tar -cf - /manyfiles | ssh dest.server 'tar -xf - -C /manyfiles'

根据您传输的文件,在tar命令中启用压缩是有意义的:
tar -czf - /manyfiles | ssh dest.server 'tar -xzf - -C /manyfiles'

ssh命令选择一个对 CPU 更友好的密码(如 arcfour)也可能是有意义的: tar -cf - /manyfiles | ssh -c arcfour dest.server 'tar -xf - -C /manyfiles'

或者将两者结合起来,但这实际上取决于您的瓶颈是什么。如果您进行增量同步,
显然rsync会快很多。


Dav*_*rtz 11

使用rsync代替scp。您可以像 一样轻松地使用rsyncover ,并且它支持“文件传输流水线以最小化延迟成本”。sshscp

一个提示:如果数据是可压缩的,请启用压缩。如果不是,请禁用它。