使用终端上的某些命令从远程服务器并行复制文件?

使用终端上的某些命令从远程服务器并行复制文件?

我正在使用以下 scp 命令将文件从远程服务器复制到本地服务器。我只需在终端上输入以下命令,它就会开始复制。

scp -r user@machineA:/data/process/* /data/process/

现在,由于远程服务器上有大约 100 个文件,每个文件大小约为 11 GB,因此上述命令将一次复制一个文件。有没有什么方法可以让我同时复制 5 个文件,同时运行一些可以直接在终端上运行的命令?

我还安装了 GNU 并行,但不确定如何在这里使用它,它可以帮助我通过直接在终端上运行来并行复制文件?或者如果有其他方式,我也愿意。

答案1

这是在远程服务器上运行的命令,涉及findparallel

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/'

相关内容