Você pode sempre bittorrent entre os hosts, mas não tenho certeza de como automatizá-lo de improviso.
Eu não faço esse tipo de coisa com frequência, então não faço scripts. Em vez disso, eu criaria um grande one-liner para fazer o trabalho. Então, tecnicamente, isso não é um comando, mas é tudo em uma linha. Não é difícil roteirizar se você faz isso com frequência.
$ 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
Isso se divide em:
$ 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
Você precisa configurar o SSH para fazer login no seu host com autorização de chave para executá-lo sem interação. Se você fizer isso, coloque uma instrução echo para informar onde está.
Testado, mas espero que as opções de rsync possam ser ajustadas.