archivos scp de una carpeta particular en paralelo

archivos scp de una carpeta particular en paralelo

Quiero archivos scp desde machineAmi machineBy así es como lo estoy haciendo. Estoy copiando un montón de archivos uno por uno de primaryla carpeta de machineAa primaryla carpeta de machineBy secondaryde la carpeta machineAa secondaryla carpeta de machineB.

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

¿Hay alguna manera de poder copiar varios archivos en paralelo? ¿Como cinco archivos a la vez desde una carpeta? Entonces, en lugar de copiar un archivo a la vez, ¿quiero copiar cinco archivos de las carpetas principal o secundaria respectivamente?

Básicamente, quiero copiar todo lo que hay en las carpetas primaria y secundaria machineAen machineBparalelo.

También tengo GNU Parallel instalado en mi caja si puedo usarlo. Intenté el siguiente comando pero no funciona. Esperaba que copiara 5 archivos en paralelo a la vez hasta que todo se copie desde esa carpeta.

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

¿Hay algún problema con mi sintaxis paralela? ¿Cuál es la mejor manera de copiar cinco archivos en paralelo desde una carpeta remota hasta que se copie todo?

Respuesta1

¿Por qué crees que la conexión paralela lo haría más rápido? SCP es una herramienta muy simple para transferir algunos archivos pequeños, nada que ver con el rendimiento y el rendimiento. Ejecutarlo desde procesos más paralelos podría hacerlo un poco más rápido, pero no significativamente. Lo que puedes hacer del otro modo es:

  • Úselo sftppara obtener un mejor rendimiento y una copia más inteligente (debería ser suficiente), por ejemplo usando-r
  • Úselo ControlMasterpara deshacerse de la sobrecarga de las conexiones TCP paralelas
  • Utilice los parámetros correctos paraparallel

Yo comenzaría con el sftp:

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

Respuesta2

Necesita que la expansión * se realice en el lado remoto:

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

información relacionada