arquivos scp da pasta particular em paralelo

4

Eu quero arquivos scp de machineA em meu machineB e é assim que estou fazendo isso. Estou copiando vários arquivos um por um da pasta primary da pasta machineA para primary da pasta machineB e secondary da pasta machineA to secondary de machineB .

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

Existe alguma maneira pela qual eu possa copiar vários arquivos em paralelo? Gosta de cinco arquivos de cada vez de uma pasta? Então, ao invés de copiar um arquivo de cada vez, eu quero copiar cinco arquivos de pastas primárias ou secundárias, respectivamente?

Basicamente, quero copiar o que estiver nas pastas primária e secundária de machineA para machineB parallely.

Eu também tenho o GNU Parallel instalado na minha caixa se eu puder usar isso. Eu tentei abaixo do comando, mas não funciona. Eu estava esperando que ele deveria copiar 5 arquivos em paralelo por vez até que tudo seja copiado dessa pasta.

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

Algo de errado com minha sintaxe paralela? Qual é a melhor maneira pela qual posso copiar cinco arquivos em paralelo a partir de uma pasta remota até que tudo seja copiado dela?

    
por david 25.05.2017 / 00:20

2 respostas

2

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

  • Use sftp para obter melhor taxa de transferência e uma cópia mais inteligente (deve ser suficiente), por exemplo, usando -r
  • Use ControlMaster para se livrar da sobrecarga de conexões TCP paralelas
  • Use os parâmetros corretos para o parallel

Gostaria de começar com o sftp :

sftp -r trinity@machineA:/data01/primary/ /data01/primary/
    
por 25.05.2017 / 11:50
2

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

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