Primeiro, você precisa saber como extrair vários argumentos de uma única linha de entrada:
cat paths | parallel --colsep ' ' echo {2} == {1}
(Eu noto que alguns dos {2} podem ser gerados a partir de {1}. Se esse é sempre o caso, você pode querer olhar para {= =}; mas isso é uma história para outra pergunta). / p>
Para executar trabalhos remotamente, use -S
:
cat paths | parallel --colsep ' ' -S server echo {2} == {1}
Para controlar quantos trabalhos são executados em um servidor remoto, use -j
:
cat paths | parallel --colsep ' ' -j4 -S server echo {2} == {1}
Para obter a saída armazenada localmente --return --cleanup
pode ser usado:
cat paths | parallel --return {2} --cleanup --colsep ' ' -j4 -S server echo {2} == {1} '>' {2}
Como você deseja que a saída seja armazenada em um diretório diferente localmente, você precisará usar o truque /./:
cat paths | parallel --return my/local/dir/./{2} --cleanup --colsep ' ' -j4 -S server echo {2} == {1} '>' {2}
Para usar um comando especial ssh
use --ssh
:
parallel --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return {2} --cleanup --colsep ' ' -j4 -S server echo {2} == {1} '>' {2}
Para ser executado em vários servidores, use --slf
em vez de -S
:
parallel --slf hosts.txt --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return {2} --cleanup --colsep ' ' -j4 echo {2} == {1} '>' {2}
Então, no total, seu comando pode ser assim:
parallel --slf hosts.txt --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return /data/backup/$DDAY/./{2}_${DATA}_FULL.tgz --cleanup --colsep ' ' -j4 "$DOMBAC - {1} > {2}_${DATA}_FULL.tgz"