rsync - erro inexplicado

5

Estou usando um script assim:

rsync -avu --delete --progress user@host:~/backup .

e todas as vezes, depois de um tempo, recebem este erro:

rsync: connection unexpectedly closed (10251754 bytes received so far) [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.0]
rsync: connection unexpectedly closed (45482 bytes received so far)  [generator]
rsync error: unexplained error (code 255) at io.c(226) [generator=3.1.0]

# generator = Debian 5, rsync  version 3.0.3  protocol version 30 (Generator[A])
# receiver = Ubuntu 14.04, rsync  version 3.1.0  protocol version 31 (Receiver[A])

Eu tenho mais de dez anos de experiência em rsync , tentei de tudo, mas não consigo entender por que isso acontece.

Em ambos os lados: não tenho erros nos logs , nada de coisas estranhas no tcpdump, problemas de conexão, firewalls. A transferência só pára depois de algum tempo.

O problema não está limitado a um servidor .

Eu pensei que poderia ser um pouco de incompatibilidade entre as versões do rsync, então eu troco o gerador com um novo servidor (Debian 8) em um farm de servidores completamente diferente e atualizo o rsync no receptor, mas eu entendo isso erro:

rsync: connection unexpectedly closed (31931964 bytes received so far) [receiver]
rsync: [generator] write error: Broken pipe (32)
rsync error: unexplained error (code 255) at io.c(820) [generator=3.1.2]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [receiver=3.1.2]

# generator = Debian 8, rsync  version 3.1.1  protocol version 31 (Generator[B])
# receiver = Ubuntu 14.04, rsync  version 3.1.2  protocol version 31 (Receiver[B])

Então eu tentei sincronizar o Receiver [A] com o Generator [B] através de um proxy e ele funciona

Receiver[A](Italy) <=> HTTP Proxy(Paris) <=>  Generator[B](Strasbourg)

Então agora eu tenho

Receiver[A] <=> Generator[A] // ERROR
Receiver[A] <=> Generator[B] // ERROR   
Receiver[B] <=> Generator[B] // ERROR

Receiver[A] <=> HTTP Proxy <=> Generator[A] // OK
Receiver[A] <=> HTTP Proxy <=> Generator[B] // OK  

Eu também tentei sem o Proxy HTTP

Receiver[A] <=> Generator[C] // OK
Receiver[A] <=> Generator[D] // OK  
Receiver[A] <=> Generator[E] // ERROR

onde os geradores [C] , [D] e [E] são servidores em Paris (mesmo farm de servidores do meu HTTP Proxy ) com rsync 3.0.9, prot. v. 30 .

Portanto, a linha inferior aqui é : tenho vários servidores em vários locais. Em Receiver[A] não tenho firewall e as coisas funcionam bem desde alguns dias atrás. Agora rsync return unexplained error e não consigo descobrir o porquê.

Acho que é um erro de rede física (não em minhas máquinas), mas não sei se consigo encontrar, isolar e reproduzir esse erro.

Obrigado pela sua ajuda!

    
por Andrej Pandovich 02.11.2016 / 17:25

1 resposta

1

Parece que você está tendo dificuldade em identificar o problema, mas não há problemas em reproduzi-lo. Nesse caso, pode ser útil solucionar o problema da própria conexão SSH e também dos dados que você está recebendo sobre ela.

Você pode executar seu comando rsync , como abaixo, ele produziria alguns dados du:

rsync -e 'bash -x -c "ssh -vvvv $0 $@ 2>/tmp/rsync-ssh.stderr | tee /tmp/rsync.stdout"' -avu --delete --progress user@host:~/backup .

Observar o final desses arquivos pode ter algo útil. Por exemplo, se as conexões SSH foram interrompidas, algo deve aparecer em /tmp/rsync-ssh.stderr . E se for realmente um problema do outro lado, o despejo real do protocolo rsync em /tmp/rsync.stdout pode ter alguma dica stringificada ( strings /tmp/rsync.stdout ).

Se eu tivesse que adivinhar, seria um firewall ruim ou um problema físico corrompendo os pacotes, fazendo com que a conexão SSH caísse.

    
por 10.10.2017 / 13:03