Zuerst müssen Sie wissen, wie Sie mehrere Argumente aus einer einzigen Eingabezeile extrahieren:
cat paths | parallel --colsep ' ' echo ==
(Ich stelle fest, dass einige der aus generiert werden können. Wenn dies immer der Fall ist, möchten Sie vielleicht {= =} betrachten; dies ist jedoch eine Geschichte für eine andere Frage.)
Um Jobs remote auszuführen, verwenden Sie -S
:
cat paths | parallel --colsep ' ' -S server echo ==
So steuern Sie, wie viele Jobs auf einem Remote-Server ausgeführt werden -j
:
cat paths | parallel --colsep ' ' -j4 -S server echo ==
Die lokal gespeicherte Ausgabe --return --cleanup
kann verwendet werden:
cat paths | parallel --return --cleanup --colsep ' ' -j4 -S server echo == '>'
Da Sie die Ausgabe lokal in einem anderen Verzeichnis speichern möchten, müssen Sie den Trick /./ verwenden:
cat paths | parallel --return my/local/dir/./ --cleanup --colsep ' ' -j4 -S server echo == '>'
Um einen speziellen ssh
Befehl zu verwenden, verwenden Sie --ssh
:
parallel --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return --cleanup --colsep ' ' -j4 -S server echo == '>'
Verwenden Sie --slf
für die Ausführung auf mehreren Servern anstelle von -S
:
parallel --slf hosts.txt --ssh "ssh -i $HOME/.ssh/id_rsa.pub -lroot" --return --cleanup --colsep ' ' -j4 echo == '>'
Ihr Befehl könnte also insgesamt so aussehen:
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"