rsync sur ssh “erreur dans le flux de données du protocole” (code 12). ssh fonctionne

51

J'ai essayé:

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

Message d'erreur

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)

Cela fonctionne bien:

ssh -p YY me@XXXXX

Ce qui me suggère que le problème n'est ni que le système sshdne fonctionne pas, ni que le port YY est doté d'un pare-feu. J'ai vérifié quand même.

Quels autres problèmes pourrait-il y avoir?

EDIT: Le problème semble avoir été "auto résolution." Je ne pouvais pas reproduire le lendemain. J'ai démarré mon ordinateur local. Peut-être notamment que j'avais une adresse IP différente de celle de la dernière fois. Et maintenant, rsync fonctionne comme par magie. Je vous serais reconnaissant de deviner ce que cela aurait pu être vu le départ.

utilisateur3391229
la source
1
Avez-vous l'autorisation d'écriture sur /homele serveur distant?
Souravc
Sûr. Quand je commence à jouer, je peux commencer à jouer au chat, au toucher, etc. Je parle d'appeler rsync sur un serveur distant pour déplacer des éléments localement. Je devrais avoir des autorisations d'écriture dans les dossiers d'origine et de destination
user3391229
J'ai eu cette erreur (en essayant de rynchroniser mon blog Pelican sur mon serveur) de temps en temps. Je trouve que si je ssh sur le serveur, puis essayez à nouveau le rsync, cela fonctionne bien. Pas sûr de ce qui se passe entre les deux.
Anthony C
Ne pas disposer de suffisamment d'espace sur le serveur distant peut également générer cette erreur.
Makan

Réponses:

84

Vous pouvez également obtenir cette erreur si vous spécifiez un chemin distant qui n'existe pas.

J'ai eu cette erreur sur 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]

Il s’agissait simplement d’une erreur de frappe dans le chemin de destination. Le appsdir n'existait pas. Quand j'ai changé cela à la static:sites/myapp.complace (la sitesdir a exist), l'erreur a disparu.

C'est bien si le répertoire final dans le chemin n'existe pas (je pourrais le faire static:sites/mynewapp.com), mais il semble que tout répertoire précédent doit déjà exister.

Henrik N
la source
J'ai presque oublié de poser cette question. Je n'ai pas eu le même problème depuis. Je soupçonne que c'est ce qui s'est passé.
user3391229
18
Je vous remercie! Ce doit être le message d'erreur le plus trompeur de tous les temps.
Frans
1
De plus, si vous n'avez pas d'exécutable rsync, cela indique une erreur similaire. La plupart du temps j'ai vu dans ansibles
mannoj
Pour une raison quelconque, je pensais que rsync créerait le répertoire s'il n'existait pas ... Je suppose que non - vous devez d'abord créer le répertoire de destination. Si le chemin de destination se termine par une barre oblique, le répertoire doit exister. Si cela ne se termine pas par une barre oblique, le niveau supérieur doit exister.
squarecandy
1
Mon problème est: le disque distant est plein.
Zhang Buzz
15

J'ai eu cette erreur quand rsyncn'était pas installé sur l'hôte cible. Le message d'erreur dans mon cas a également dit rsync: command not found. Un simple

sudo apt-get install rsync

sur l'hôte cible a résolu le problème.

Florian Brucker
la source
J'ai eu une erreur de code 12 et aucun message sur la commande rsync introuvable. Une fois installé, l'erreur est partie.
Hbar
4

Votre script de connexion à distance produit-il des ordures sur stdout? Vérifiez ceci avec

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

Si out.txtcontient des données, identifiez les déclarations incriminées dans votre .profileou .bashrcet enveloppez-les dans

if [ ! -t 1 ]; then
  echo garbage
fi
Arjen
la source
Nada dans out.txt. Mais j'ai aussi essayé cela cet après-midi pendant une période où je ne pouvais pas reproduire le problème.
user3391229
J'ai essayé cela à un moment où je pouvais produire le problème et je n'ai rien non plus dans out.txt.
joshreesjones
1

Vous devrez peut-être indiquer le chemin complet du binaire ssh, c.-à-d.

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

Bien qu'il existe d'autres causes possibles.

thomasrutter
la source
Oui, j'ai lu que cela pourrait se produire lorsque vous avez plusieurs instances de ssh que vous pourriez référencer. Cependant, le fait qu'il soit parti le lendemain rend cela improbable
user3391229
0

Cette erreur peut également se produire si le chemin d'accès à rsync sur le système distant n'est pas celui supposé par le système local. Vous pouvez voir ce qui se passe en spécifiant -vv (ou même plus vs). Si tel est le problème, vous pouvez spécifier le chemin d'accès distant à rsync avec l'option --rsync-path.

Mike
la source
0

Je voyais cette erreur:

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]

J'ai été en mesure de SSH dans l'hôte distant et a constaté qu'il n'y avait plus d'espace disque.

Andy
la source