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".