我正在通过 LAN 复制大文件,我注意到通过执行一个 ssh 管道,我可以获得大约 10MB/s 的传输速度。然而,如果我同时发射其中四个,我总共可以获得大约 40MB/s 的传输速度。
所以我想将一个大文件(例如1GB)分成几个部分,并单独对每个部分进行管道传输,然后在另一侧重新组装。还需要在传输之前 tar/zip,并在另一侧解压/解压。
我怎样才能做到这一点?
答案1
HPN-SSH
最终以和结束pigz
。
tar -cf - -C [RELATIVEFOLDER] [FILENAME] | pigz | ssh px "pigz -d | tar xf - -C [REMOTEFOLDER]"
改进之处在于十的幂。
作为参考,安装HPN-SSH
和pigz
开启Ubuntu 14.04
非常简单:
# hpn-patched ssh from ppa
sudo apt-get install python-software-properties
sudo add-apt-repository ppa:w-rouesnel/openssh-hpn
sudo apt-get update -y
sudo apt-get install openssh-server
ssh -V # should have 'hpn' in it somewhere
# pigz
sudo apt-get install pigz
答案2
好吧,有 zipsplit(1) 和 split(1),您可以使用它们来分割大文件,然后再使用 scp(1) 复制它们。或者,如果您希望实现管道化效果,您可以将输出拆分为命名管道,然后将命名管道连接到 ssh。