копировать небольшие файлы параллельно с удаленных серверов - PullRequest
0 голосов
/ 25 апреля 2018

Мне нужно скопировать множество файлов (около 2000 файлов и каждый размер файла около 5 МБ) с удаленных серверов на локальном компьютере, поэтому я обычно запускаю следующую команду на своем локальном терминале для копирования файлов:

scp goldy@machineA:/process/snap/20180418/* /data/files/

Есть ли способ скопировать эти файлы параллельно с удаленных серверов, используя gnu -rallel или что-то еще?Я имею в виду что-то вроде параллельного копирования 5 файлов вместо того, чтобы делать все по одному.

Примечание: ниже - мои имена файлов на удаленных серверах.

abc_proc_1_log.data
abc_proc_2_log.data
abc_proc_3_log.data
abc_proc_4_log.data
...
abc_proc_2000_log.data

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Ваш вопрос описан на странице руководства для GNU Parallel (man parallel): https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Parallelizing-rsync

seq -w 0 99 | parallel rsync -Havessh fooserver:src/*{}.png destdir/

Но с этими небольшими файлами вы, вероятно, захотите добавить -j100 --delay 0.01.Задержка должна убедиться, что sshd не перегружен.

0 голосов
/ 26 апреля 2018
ssh goldy@machineA 'ls -1 /process/snap/20180418/*' \
| parallel -j5 'scp goldy@machineA:{} /data/files/{}'

  • ssh goldy@machineA 'ls -1 /process/snap/20180418/*' - заранее получить список имен файлов с удаленного компьютера
  • parallel -j5 ... - выполнить до 5 заданий в parralel
...