linux - 并行来自特定远程文件夹的 scp 文件

标签 linux unix ssh scp

我想将文件从 machineA 复制到我的 machineB 中,这就是我的做法。我正在将一堆文件从 machineAprimary 文件夹逐一复制到 machineBprimary 文件夹,将 machineAsecondary 文件夹复制到 machineBsecondary 文件夹。

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/

相关文章:

linux - Haproxy 不使用 rsyslog 记录

java 应用程序和 x11 转发

linux - 如何在 ssh 集群中更新 Julia

linux - 将1个文件复制到同一目录下的100个文件夹

linux - 使用AWK删除与html标签匹配的字符(不是正则表达式)

bash - unix shell 脚本,用于将文件按固定增量按顺序移动到目录中

linux - 用于查找可执行文件路径的 Bash 脚本

linux - Arch Linux gdb 立即崩溃

linux - 使用主机系统的代理构建 Docker

python - 在 python shell 中按箭头键时看到转义字符