并行地从特定文件夹中读取 scp 文件

并行地从特定文件夹中读取 scp 文件

我想将 scp 文件放入machineA我的文件中machineB,这就是我正在做的事情。我正在将一堆文件从primary文件夹machineAprimary文件夹machineB以及secondary文件夹machineAsecondary文件夹逐一复制machineB

trinity@machineB:~$ scp trinity@machineA:/data01/primary/* /data01/primary/
trinity@machineB:~$ scp trinity@machineA:/data02/secondary/* /data02/secondary/

有什么方法可以并行复制多个文件吗?比如一个文件夹中一次五个文件?因此,我不想一次复制一个文件,而是想分别从主文件夹或辅助文件夹复制五个文件?

基本上我想将主文件夹和辅助文件夹中的所有内容复制machineAmachineB并行中。

如果我可以使用的话,我的盒子上还安装了 GNU Parallel。我尝试了下面的命令,但它不起作用。我预计它应该一次并行复制 5 个文件,直到从该文件夹复制所有内容。

parallel -j 5 scp trinity@machineA:/data01/primary/* /data01/primary/

我的并行语法有什么问题吗?我可以从远程文件夹并行复制五个文件直到从其中复制所有内容的最佳方法是什么?

答案1

为什么你认为并行连接会使速度更快? SCP 是非常简单的工具,可以传输少量小文件,对吞吐量和性能没有任何影响。从更多并行进程运行它可能会稍微快一点,但效果并不显着。您可以用另一种方式做的是:

  • 用于sftp获得更好的吞吐量和更聪明的复制(应该足够了)例如使用-r
  • 用于ControlMaster消除并行 TCP 连接的开销
  • 使用正确的参数parallel

我将从以下开始sftp

sftp -r trinity@machineA:/data01/primary/ /data01/primary/

答案2

您需要在远程端进行 * 扩展:

ssh machineA 'parallel -j 5 scp {} machineB:/data01/primary/ ::: /data01/primary/*'

相关内容