Я хочу 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/*'