Sie können es immer zwischen den Hosts bittorrent machen, aber ich bin nicht sicher, wie ich es automatisieren kann.
Ich mache so etwas nicht oft, also würde ich es nicht schreiben. Stattdessen würde ich einen großen Einliner bauen, um die Arbeit zu erledigen. Technisch gesehen ist das also kein Befehl, sondern alles in einer Zeile. Es ist nicht schwer zu schreiben, wenn Sie dies häufig tun.
$ md5sum bigfile > bigfile.md5 ; export BIGFILE="notdone" ; while [ "$BIGFILE" eq "notdone" ] ; do rsync --checksum --partial bigfile* user@remotehost:path/to/put/it/in/ ; ssh user@remotehost "cd path/to/put/it/in/; md5sum -c < bigfile.md5" | grep -Ev 'OK$' | [ `wc -l` == "0" ] && BIGFILE="done" ; done
Dies teilt sich auf in:
$ md5sum bigfile > bigfile.md5 ; \ # create our own checksum export BIGFILE="notdone" ; \ # set our check variable while [ "$BIGFILE" == "notdone" ]; do \ # recheck variable state after each pass rsync --checksum --partial bigfile* \ # call rsync to copy user@remotehost:path/to/put/it/in/ ; \ # and call ssh to check ssh user@remotehost \ # connect with ssh "cd path/to/put/it/in/; md5sum -c < bigfile.md5" \ # and run the check | grep -Ev 'OK$' \ # ignore good output | [ `wc -l` == "0" ] \ # if we didn't find one && BIGFILE="done" ; \ # set our get-out-of-jail card done \ # and we're done
Sie müssen SSH einrichten, um sich bei Ihrem Host mit Schlüsselberechtigung anzumelden, um ihn ohne Interaktion auszuführen. Geben Sie in diesem Fall eine Echo-Anweisung ein, um Ihnen zu sagen, wo es sich befindet.
Getestet, aber ich gehe davon aus, dass die Rsync-Optionen optimiert werden könnten.