arquivos scp de uma pasta específica em paralelo

arquivos scp de uma pasta específica em paralelo

Quero transferir arquivos scp para machineAo meu machineBe é assim que estou fazendo. Estou copiando vários arquivos, um por um, da primarypasta machineApara a primarypasta machineBe secondaryda pasta machineApara a secondarypasta machineB.

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

Existe alguma maneira de copiar vários arquivos em paralelo? Tipo cinco arquivos de uma pasta por vez? Então, em vez de copiar um arquivo por vez, quero copiar cinco arquivos das pastas primária ou secundária, respectivamente?

Basicamente, quero copiar tudo o que existe nas pastas primária e secundária em machineAparalelo machineB.

Também tenho o GNU Parallel instalado na minha caixa, se puder usá-lo. Tentei o comando abaixo, mas não funciona. Eu esperava que ele copiasse 5 arquivos em paralelo por vez até que tudo fosse copiado daquela pasta.

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

Alguma coisa errada com minha sintaxe paralela? Qual é a melhor maneira de copiar cinco arquivos em paralelo de uma pasta remota até que tudo seja copiado dela?

Responder1

Por que você acha que a conexão paralela tornaria isso mais rápido? SCP é uma ferramenta muito simples para transferir alguns arquivos pequenos, nada para rendimento e desempenho. Executá-lo a partir de processos mais paralelos poderia torná-lo um pouco mais rápido, mas não significativamente. O que você pode fazer por outro lado é:

  • Use sftppara obter melhor rendimento e cópias mais inteligentes (deve ser suficiente), por exemplo, usando-r
  • Use ControlMasterpara se livrar da sobrecarga de conexões TCP paralelas
  • Use os parâmetros corretos para oparallel

Eu começaria com sftp:

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

Responder2

Você precisa que a expansão * aconteça no lado remoto:

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

informação relacionada