Для начала вам нужно знать, как извлечь несколько аргументов из одной строки ввода:
cat paths | parallel --colsep ' ' echo ==
(Я отмечаю, что некоторые из могут быть сгенерированы из . Если это всегда так, вы можете захотеть взглянуть на {= =}; но это история для другого вопроса).
Для удаленного запуска заданий вы используете -S
:
cat paths | parallel --colsep ' ' -S server echo ==
Чтобы контролировать, сколько заданий выполняется на удаленном сервере, используйте -j
:
cat paths | parallel --colsep ' ' -j4 -S server echo ==
Чтобы получить вывод, сохраненный локально, --return --cleanup
можно использовать:
cat paths | parallel --return --cleanup --colsep ' ' -j4 -S server echo == '>'
Поскольку вы хотите, чтобы вывод хранился локально в другом каталоге, вам нужно использовать трюк /./:
cat paths | parallel --return my/local/dir/./ --cleanup --colsep ' ' -j4 -S server echo == '>'
Чтобы использовать специальную ssh
команду, используйте --ssh
:
parallel --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return --cleanup --colsep ' ' -j4 -S server echo == '>'
Для запуска на нескольких серверах используйте --slf
вместо -S
:
parallel --slf hosts.txt --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return --cleanup --colsep ' ' -j4 echo == '>'
В общем, ваша команда может выглядеть так:
parallel --slf hosts.txt --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return /data/backup/$DDAY/./_$_FULL.tgz --cleanup --colsep ' ' -j4 "$DOMBAC - > _$_FULL.tgz"