我想将文件从 machineA
复制到我的 machineB
中,这就是我的做法。我正在将一堆文件从 machineA
的 primary
文件夹逐一复制到 machineB
的 primary
文件夹,将 machineA
的 secondary
文件夹复制到 machineB
的 secondary
文件夹。
trinity@machineB:~$ scp trinity@machineA:/data01/primary/* /data01/primary/
trinity@machineB:~$ scp trinity@machineA:/data02/secondary/* /data02/secondary/
有什么方法可以并行复制多个文件吗?比如一个文件夹中一次五个文件?因此,我不想一次复制一个文件,而是想分别从主文件夹或辅助文件夹复制五个文件?
基本上,我想将 machineA
的主文件夹和辅助文件夹中的所有内容并行复制到 machineB
中,而不是按顺序执行。我的意思是我可以设置一些限制,例如一次复制 5 个文件。
如果我可以使用的话,我的盒子上还安装了 GNU Parallel。我在 machineB
上尝试了以下命令,但它不起作用并且给出了错误。我预计它应该一次并行复制 5 个文件,直到从该文件夹复制所有内容。
ssh machineA 'parallel -j 5 scp {} machineB:/data01/primary/ ::: /data01/primary/*'
下面是我看到的错误:
Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
lost connection
我可以很好地从 machineB 到 machineA 进行 ssh,没有任何问题。我的并行语法有什么问题吗?我可以从远程文件夹并行复制五个文件直到从其中复制所有内容的最佳方法是什么?我的所有文件名均以 file_somenumber.dat
最佳答案
运行:
ssh machineA 'parallel --dry-run -j 5 scp {} machineB:/data01/primary/ ::: /data01/primary/*'
它将打印一堆 scp 行。
选择其中之一并执行以下操作:
ssh machineA 'scp ...'
需要输入密码吗?
关于linux - 并行来自特定远程文件夹的 scp 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44335153/