Вы всегда можете установить битрорент между хостами, но я не уверен, как это автоматизировать.
Я не делаю такого рода вещи часто, поэтому я бы не стал писать сценарии. Вместо этого я бы собрал большую строчку, чтобы сделать работу. Технически, это не одна команда, а все в одной строке. Это не сложно, если вы делаете это часто.
$ 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
Это делится на:
$ 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
Вы должны настроить SSH для входа на ваш хост с ключом авторизации для запуска без взаимодействия. Если вы это сделаете, поместите туда эхо-оператор, чтобы сказать, где он находится.
Протестировано, но я ожидаю, что параметры rsync могут быть изменены.