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 sshd
n'est pas en cours d'exécution, ni que le port YY est protégé par 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.
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 répertoire apps
n'existait pas. Lorsque j'ai changé cela en static:sites/myapp.com
à la place (le sites
dir did existe), l'erreur a disparu.
C'est bien si le répertoire final dans le chemin n'existe pas (je pourrais faire static:sites/mynewapp.com
), mais il semble que tout répertoire précédent doit déjà exister.
J'ai eu cette erreur quand rsync
n'était pas installé sur l'hôte cible. Le message d'erreur dans mon cas disait aussi rsync: command not found
. Un simple
Sudo apt-get install rsync
sur l'hôte cible a résolu le problème.
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.txt
contient des données, identifiez les instructions incriminées dans votre .profile
ou .bashrc
et emballez-les.
if [ ! -t 1 ]; then
echo garbage
fi
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.
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.
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.