rsync sobre ssh "error en el flujo de datos del protocolo" (código 12). ssh funciona

51

Lo intenté:

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

Mensaje de error

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)

Esto funciona bien:

ssh -p YY me@XXXXX

Lo que me sugiere que el problema no es que sshdno se esté ejecutando ni que el puerto YY tenga firewall. Lo he comprobado de todos modos.

¿Qué otros problemas podría haber?

EDITAR: El problema parece haber sido "auto resolución". No pude replicar al día siguiente. Encendí mi computadora local. Quizás notablemente tenía una dirección IP diferente a la última vez. Y ahora rsync funciona mágicamente. Apreciaría las conjeturas sobre lo que podría haber sido a la luz de que desapareciera.

usuario3391229
fuente
1
¿Tiene permiso de escritura en /homeel servidor remoto?
souravc
Seguro. Cuando ssh puedo comenzar a hacer gato y tocar, etc. Pensándolo bien, no estoy seguro de lo que quieres decir con control remoto. Estoy hablando de llamar a rsync mientras estoy en un servidor remoto para mover cosas localmente. Debería tener permisos de escritura tanto en la carpeta original como en la carpeta de destino
user3391229
Recibí este error (al intentar sincronizar mi blog Pelican con mi servidor) de vez en cuando. Encuentro que si ingreso en el servidor, luego intento rsync nuevamente, funciona bien. No estoy seguro de lo que sucede en el medio.
Anthony C
No tener suficiente espacio en el servidor remoto también puede generar este error.
Makan

Respuestas:

84

También puede obtener este error si especifica una ruta remota que no existe.

Recibí este error en 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]

Resultó que era simplemente una cuestión de escribir mal el camino de destino. El appsdirectorio no existía. Cuando cambié eso a su static:sites/myapp.comlugar (el sitesdirectorio existía), el error desapareció.

Está bien si el directorio final en la ruta no existe (podría hacerlo static:sites/mynewapp.com) pero parece que cualquier directorio anterior ya debe existir.

Henrik N
fuente
Casi me olvido de hacer esta pregunta. No he tenido el mismo problema desde entonces. Sospecho que esto es lo que sucedió.
user3391229
18
¡Gracias! Ese debe ser el mensaje de error más engañoso de la historia.
Frans
1
Además, si no tiene rsync ejecutable, muestra un error similar. Principalmente he visto en ansibles
mannoj
Por alguna razón, pensé que rsync crearía el directorio si no existiera ... Supongo que no, primero debe crear el directorio de destino. Si la ruta de destino termina en una barra diagonal, el directorio debe existir. Si no termina en una barra inclinada, debe existir el nivel superior.
squarecandy
1
Mi problema es: el disco remoto está lleno.
Zhang Buzz
15

Recibí este error cuando rsyncno estaba instalado en el host de destino. El mensaje de error en mi caso también dijo rsync: command not found. Un simple

sudo apt-get install rsync

en el host de destino resolvió el problema.

Florian Brucker
fuente
Tuve un error de código 12 y no hay ningún mensaje sobre el comando rsync que no se encuentra. Una vez instalado, el error desapareció.
Hbar
4

¿Su script de inicio de sesión en el extremo remoto produce basura en stdout? Comprueba esto con

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

Si out.txtcontiene datos, identifique las declaraciones ofensivas en su .profileo .bashrcy envuélvalas en

if [ ! -t 1 ]; then
  echo garbage
fi
Arjen
fuente
Nada en out.txt. Pero también lo intenté esta tarde durante un período en el que no pude reproducir el problema.
user3391229
Intenté esto en un momento en que podía producir el problema y tampoco obtuve nada en out.txt.
joshreesjones
1

Es posible que deba poner la ruta completa al binario ssh, es decir

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

Aunque hay otras causas posibles.

thomasrutter
fuente
Sí, leí que eso podría suceder cuando tienes varias instancias de ssh a las que podrías estar haciendo referencia. Sin embargo, el hecho de que desapareció al día siguiente hace que esto sea poco probable
usuario3391229
0

Este error también puede ocurrir si la ruta a rsync en el sistema remoto no es la que el sistema local supone. Puede ver lo que está sucediendo especificando -vv (o incluso más vs). Si este es el problema, puede especificar la ruta remota a rsync con la opción --rsync-path.

Miguel
fuente
0

Estaba viendo este error:

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]

Pude ingresar al host remoto y descubrí que no tenía espacio en disco.

Andy
fuente