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