Linux 如何使用scp同时复制多个文件
我想同时复制多个文件,以加快我目前使用的进程Linux 如何使用scp同时复制多个文件,linux,scp,Linux,Scp,我想同时复制多个文件,以加快我目前使用的进程 scp -r root@xxx.xxx.xx.xx:/var/www/example/example.example.com . 但它一次只复制一个文件。我有一根100 Mbps的光纤,所以我有足够的带宽同时进行大量复制,请帮助。100位以太网实际上相当慢。理论上可以预期8个MiB/s。实际上,通常最多只能得到4-6个MiB/s 也就是说,如果并行运行多个会话,则不会看到速度的提高。您可以自己尝试,只需运行两个并行SCP会话,复制两个大文件。我猜你
scp -r root@xxx.xxx.xx.xx:/var/www/example/example.example.com .
但它一次只复制一个文件。我有一根100 Mbps的光纤,所以我有足够的带宽同时进行大量复制,请帮助。100位以太网实际上相当慢。理论上可以预期8个MiB/s。实际上,通常最多只能得到4-6个MiB/s 也就是说,如果并行运行多个会话,则不会看到速度的提高。您可以自己尝试,只需运行两个并行SCP会话,复制两个大文件。我猜你不会看到明显的加速。原因如下:
rsync
(在引擎盖下使用SSH)的工具复制自上次运行命令以来已更改的文件ssh root@xxx "cd /var/www/example ; tar cf - example.example.com" > example.com.tar
或通过压缩:
ssh root@xxx "cd /var/www/example ; tar czf - example.example.com" > example.com.tar.gz
注意:
bzip2
压缩效果更好,但速度较慢。这就是为什么我对这样的任务使用gzip
(z
)。如果指定多个文件,scp将按顺序下载它们:
scp -r root@xxx.xxx.xx.xx:/var/www/example/file1 root@xxx.xxx.xx.xx:/var/www/example/file2 .
或者,如果您希望并行下载文件,那么可以使用多个scp调用,将每个调用放在后台
#! /usr/bin/env bash
scp root@xxx.xxx.xx.xx:/var/www/example/file1 . &
scp root@xxx.xxx.xx.xx:/var/www/example/file2 . &
SSH能够进行所谓的“多路复用”——通过一个(到一台服务器)进行更多连接。这可能是你买得起你想要的东西的一种方式。查找诸如“ControlMaster”之类的关键字 第二种方法是使用更多连接,然后在后台发送每个作业:
for file in file1 file2 file3 ; do
scp $file server:/tmp/ &
done
但是,这就是你问题的答案——“如何同时复制多个文件”。为了提高速度,您可以使用较弱的加密(rc4等),也不要忘记,瓶颈可能是您的硬盘驱动器,因为SCP不会隐式限制传输速度
最后一件事是使用rsync-在某些情况下,它可以比scp快得多…我不确定这是否对您有帮助,但我通常会在源位置存档(不需要压缩。只需存档就足够了)文件,下载并提取它们。这将大大加快这一进程。 在存档之前,下载1GB需要超过8小时 存档后,执行相同的操作花费了<8分钟您可以使用并行scp(也称为pscp): 使用此工具,您可以同时将一个或多个文件复制到多个主机
关于,您可以将后台任务与wait命令一起使用。 Wait命令确保在处理下一行之前完成所有后台任务。i、 e echo将在所有三个节点的scp完成后执行
#!/bin/bash
scp -i anuruddha.pem myfile1.tar centos@192.168.30.79:/tmp &
scp -i anuruddha.pem myfile2.tar centos@192.168.30.80:/tmp &
scp -i anuruddha.pem myfile.tar centos@192.168.30.81:/tmp &
wait
echo "SCP completed"
什么是“100毫克纤维”?100mbit以太网?还是10 GBit以太网?编写脚本!。在每个命令的末尾放置一个
&
,将其发送到后台或查看gnuparallel@AaronDigulla对不起,我是故意的Ethernet@FredrikPihl我不确定我是否理解你的意思,请你详细说明一下好吗?在我的场景中,它不是很大的文件,大约有10000个图像,每个都在30-60kb之间,所以,如果我是正确的,一次至少下载10个不会减慢我的连接速度?我从服务器上没有一个大于100kb的图像或文件。另外,当我运行两个SCP会话时,下载相同的文件并相互覆盖。我知道这是一个相当老的问题,但正如@Philip所建议的,传输速度与可用带宽无关,一个简单的tar将使速度提高很多倍,数据量和使用的带宽将相同(ish),但是传输速度会很快。S,你说的是100%正确的,但是我不只是试图一次访问几个大文件。我正在尝试总共下载大约10000个小图像,最好的方法是创建一个存档(tar),也许压缩它(gzip),然后传输并执行反向操作。谢谢你,迈克,我认为这是最好的解决方案。非常感谢你!最快的方法是类似于ssh source.machine“tar czpf-/lot/of/data”| tar xzpf--C/tmp
@rogerdpack:Hi,查看提供简短细节作为答案以及链接这只会将同一文件复制多次