Não sei ao certo o que pode causar o problema corrupt packet
que interrompe sua conexão, mas você pode achar útil a opção --partial
ou --partial-dir
do rsync ao transferir arquivos grandes para que quando você reiniciar a transferência continue onde a transferência foi interrompida em vez de ter que recomeçar a transferência do arquivo inteiro:
- partial-dir = .rsync-partial
Você pode modificar seu comando original assim:
rsync -rav --progress --partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
ou
rsync -rav --progress --partial-dir=.rsync-partial -e "ssh -o ConnectTimeout=2 -o ServerAliveInterval=2 -ServerAliveCountMax=2" --delete ./local_dir user@$SERVER:/dest_dir
Observe que, neste exemplo, eu removi a opção -q
( --quiet
) e adicionei a opção --progress
no primeiro exemplo e --partial-dir=.rsync-partial
no segundo exemplo.
A diferença entre --partial
e --partial-dir=.rsync-partial
é que o último cria um diretório que mantém os arquivos parciais separados dos arquivos totalmente transferidos, se isso for importante para você no lado de recepção (servidor).
A página do manual do rsync explicará isso com mais detalhes, embora eu também indique um importante nota de segurança da página de manual:
IMPORTANT: the --partial-dir should not be writable by other users or it is a security risk. E.g. AVOID "/tmp".