rsync sobre ssh “erro no fluxo de dados do protocolo” (código 12). ssh funciona

40

Eu tentei:

rsync -v -v -e 'ssh -p YY' ./testfile me@XXXXX:/home

Mensagem de erro

opening connection using: ssh -p YY -l me 146.6.84.206 rsync ->-server -vvve.s . /home 
[sender] make_file(testfile,*,0)
send_file_list done
send_files starting
server_recv(2) starting pid=17537
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600)[sender=3.0.6]
_exit_cleanup(code=12, file=io.c, line=600): about to call exit(12)

Isso funciona bem:

ssh -p YY me@XXXXX

O que me sugere que o problema não é que sshd não esteja em execução nem que a porta YY seja protegida por firewall. Eu verifiquei de qualquer maneira.

Que outros problemas poderia haver?

EDITAR: O problema parece ter sido "auto-resolvido". Eu não consegui replicar no dia seguinte. Eu comecei meu computador local. Talvez notavelmente eu tivesse um endereço IP diferente do que da última vez. E agora o rsync funciona magicamente. Eu apreciaria as suposições sobre o que poderia ter sido à luz disso.

    
por user3391229 18.05.2015 / 05:39

6 respostas

66

Você também pode obter esse erro se especificar um caminho remoto que não existe.

Eu recebi este erro no OS X:

$ rsync -avz public/ static:apps/myapp.com
building file list ... done
rsync: connection unexpectedly closed (8 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at /BuildRoot/Library/Caches/com.apple.xbs/Sources/rsync/rsync-47/rsync/io.c(453) [sender=2.6.9]

Virou-se simplesmente uma questão de erro de digitação no caminho de destino. O apps dir não existia. Quando eu mudei para static:sites/myapp.com (o sites dir fez existir), o erro desapareceu.

Tudo bem se o diretório final no caminho não existir (eu poderia fazer static:sites/mynewapp.com ), mas parece que qualquer diretório anterior já deve existir.

    
por Henrik N 04.01.2016 / 20:39
7

Recebi este erro quando rsync não foi instalado no host de destino. A mensagem de erro no meu caso também dizia rsync: command not found . Um simples

sudo apt-get install rsync

no host de destino resolveu o problema.

    
por Florian Brucker 17.05.2017 / 16:24
3

O seu script de login no final remoto produz lixo no stdout? Verifique isso com

ssh -p YY me@XXXXX /bin/true > out.txt

Se out.txt contiver dados, identifique as declarações incorretas em .profile ou .bashrc e agrupe-as em

if [ ! -t 1 ]; then
  echo garbage
fi
    
por Arjen 18.05.2015 / 10:35
0

Você pode precisar colocar o caminho completo para o binário ssh, ou seja,

rsync -v -v -e '/usr/bin/ssh -p YY' ./testfile me@XXXXX:/home

Embora existam outras causas possíveis.

    
por thomasrutter 18.05.2015 / 05:54
0

Este erro também pode acontecer se o caminho para rsync no sistema remoto não for o que o sistema local assume que seja. Você pode ver o que está acontecendo, especificando -vv (ou até mesmo mais). Se este for o problema, você pode especificar o caminho remoto para o rsync com a opção --rsync-path.

    
por Mike 18.10.2016 / 19:21
0

Eu estava vendo esse erro:

rsync -e 'ssh -v'

debug1: Exit status 11

...

rsync error: error in rsync protocol data stream (code 12) at /BuildRoot
/Library/Caches/com.apple.xbs/Sources/rsync/rsync-51/rsync/io.c(453)
[sender=2.6.9]

Consegui ssh no host remoto e descobri que estava sem espaço em disco.

    
por Andy 02.05.2017 / 22:37