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

50

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 é que sshdnão está em execução nem que a porta YY está com firewall. Eu verifiquei de qualquer maneira.

Que outros problemas poderiam existir?

Edição: O problema parece ter sido "auto-resolução". Não pude replicar no dia seguinte. Liguei meu computador local. Talvez eu tenha um endereço IP diferente do que da última vez. E agora o rsync funciona magicamente. Eu apreciaria palpites sobre o que poderia ter sido à luz disso desaparecer.

user3391229
fonte
11
Você tem permissão de gravação no /homeservidor remoto?
souravc
Certo. Quando eu ssh, posso começar a fazer gatos e toques, etc. Pensando bem, não sei bem o que você quer dizer com controle remoto. Estou falando de chamar o rsync enquanto estiver em um servidor remoto para mover as coisas localmente. Eu deveria ter permissões de gravação na pasta original e na pasta de destino
user3391229
Eu recebo esse erro (ao tentar rsync meu blog Pelican no meu servidor) de vez em quando. Eu acho que se eu ssh no servidor, tente o rsync novamente, ele funciona bem. Não tenho certeza do que acontece no meio.
Anthony C
Não ter espaço suficiente no servidor remoto também pode gerar esse erro.
Makan

Respostas:

84

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]

Por sua vez, era simplesmente uma questão de digitar errado o caminho de destino. O appsdir não existia. Quando eu mudei isso para static:sites/myapp.comem vez disso (a sitesdir fez existir), o erro foi embora.

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

Henrik N
fonte
Eu quase esqueci de fazer esta pergunta. Eu não tive o mesmo problema desde então. Eu suspeito que foi isso que aconteceu.
precisa saber é o seguinte
18
Obrigado! Essa deve ser a mensagem de erro mais enganosa de todos os tempos.
Frans
11
Além disso, se você não tem o rsync executável, isso mostra um erro semelhante. Principalmente eu já vi em ansibles
mannoj
Por alguma razão, pensei que o rsync criaria o diretório se não existisse ... Acho que não - você precisa criar o diretório de destino primeiro. Se o caminho de destino terminar em uma barra, o diretório deverá existir. Se não terminar em uma barra, o nível acima deve existir.
Squarecandy 06/08/19
11
Meu problema é: o disco remoto está cheio.
Zhang Buzz
15

Eu recebi esse erro quando rsyncnão estava 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.

Florian Brucker
fonte
Eu tive o erro de um código 12 e nenhuma mensagem sobre o comando rsync não foi encontrada. Uma vez instalado, o erro desapareceu.
Hbar 12/09
3

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.txtcontiver dados, identifique as declarações ofensivas no seu e .profileou .bashrcenvolva-as

if [ ! -t 1 ]; then
  echo garbage
fi
Arjen
fonte
Nada em out.txt. Mas também tentei essa tarde durante um período em que não consegui reproduzir o problema.
User3391229
Tentei isso em um momento em que pude produzir o problema e também não obtive nada em out.txt.
Joshreesjones # 14/15
1

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.

thomasrutter
fonte
Sim, eu li que isso poderia acontecer quando você tem várias instâncias do ssh que você poderia estar fazendo referência. No entanto, o fato de ter desaparecido no dia seguinte torna isso improvável #
user3391229 18/15/15
0

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

Mike
fonte
0

Eu estava vendo este 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]

Eu era capaz de ssh no host remoto e descobri que estava sem espaço em disco.

Andy
fonte