scp файлы из определенной папки параллельно

scp файлы из определенной папки параллельно

Я хочу scp-файлы из machineAв мой machineB, и вот как я это делаю. Я копирую кучу файлов один за другим из primaryпапки machineAв primaryпапку machineBи secondaryиз папки machineAв secondaryпапку machineB.

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

Есть ли способ, которым я могу копировать несколько файлов параллельно? Например, пять файлов за раз из папки? То есть вместо того, чтобы копировать по одному файлу за раз, я хочу скопировать пять файлов из первичной или вторичной папки соответственно?

machineAПо сути, я хочу параллельно скопировать все, что находится в первичной и вторичной папках machineB.

У меня также установлен GNU Parallel на моем компьютере, если я могу его использовать. Я попробовал команду ниже, но она не работает. Я ожидал, что она должна копировать 5 файлов параллельно за раз, пока все не будет скопировано из этой папки.

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

Что-то не так с моим параллельным синтаксисом? Каков наилучший способ, которым я могу скопировать пять файлов параллельно из удаленной папки, пока все из нее не будет скопировано?

решение1

Почему вы думаете, что параллельное соединение ускорит его? SCP — очень простой инструмент для передачи нескольких небольших файлов, ничего для пропускной способности и производительности. Запуск его из нескольких параллельных процессов может сделать его немного быстрее, но не значительно. Что вы можете сделать другим способом:

  • Используйте sftpдля повышения производительности и более умного копирования (должно быть достаточно), например, с помощью-r
  • Используйте ControlMasterдля устранения накладных расходов на параллельные TCP-соединения.
  • Используйте правильные параметры дляparallel

Я бы начал с sftp:

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

решение2

Необходимо, чтобы расширение * произошло на удаленной стороне:

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

Связанный контент