我正在使用以下 scp 命令将文件从远程服务器复制到本地服务器。我只需在终端上输入以下命令,它就会开始复制。
scp -r user@machineA:/data/process/* /data/process/
现在,由于远程服务器上有大约 100 个文件,每个文件大小约为 11 GB,因此上述命令将一次复制一个文件。有没有什么方法可以让我同时复制 5 个文件,同时运行一些可以直接在终端上运行的命令?
我还安装了 GNU 并行,但不确定如何在这里使用它,它可以帮助我通过直接在终端上运行来并行复制文件?或者如果有其他方式,我也愿意。
答案1
这是在远程服务器上运行的命令,涉及find
和parallel
:
find /data/process/ -type f | parallel scp {} user@machineB:/data/process/
编辑:
请参阅文档关于如何控制并行执行的作业数量。
并发作业的数量用
--jobs
或等价的给出-j
。
默认情况下--jobs
与 CPU 核心数相同。
--jobs 0
将尽可能并行运行尽可能多的作业。
编辑:
这应该是另一个问题,并且已经被询问和回答:如何在远程计算机上运行命令?
ssh user@machineA 'find /data/process/ -type f | parallel scp {} user@machineB:/data/process/'