erreur dans le stream de données du protocole rsync (code 12) à io.c (605)

J’essaie de synchroniser les données d’une boîte à une autre, mais chaque fois que j’essaie d’exécuter la commande, j’obtiens l’erreur,

error in rsync protocol data stream (code 12) at io.c(605) [Receiver=3.0.9] 

J’ai vu des gens obtenir des io.c(600) et 610 dans divers autres endroits du Web, mais rien sur une erreur 605 . Quelle est la cause de ce problème? Comment peut-il être réparé?

La commande que je cours est

 /usr/bin/rsync -az -e /usr/bin/ssh user@remote:filename /path/to/local/filename 

Selon cela, c’est un bug officiel. Au bas de la page, une victime du bogue mentionne qu’il ne l’obtient pas lorsque le fichier qu’il essaie d’envoyer est <100 Go ou lorsqu'il utilise l'indicateur -W sur le client (ce qui indique une copie complète du fichier plutôt que rsync résolution delta, en gros, rsync devient un peu mieux que scp).

J’ai constaté que cette erreur s’est produite lorsque le lecteur de disque dur de la machine cible était plein.

J’ai trouvé cela après avoir essayé la réponse acceptée et obtenu la même erreur, donc cela pourrait aider quelqu’un pour qui la réponse acceptée ne fonctionne pas. Clairement, il s’agit là d’une réponse très spécifique et très facile à diagnostiquer. Je ne présume donc pas que ce message d’erreur est directement lié à un manque d’espace sur la cible.

J’ai eu la même erreur (sur Debian Wheezy) avec un kernel oops. Le drapeau -W suggéré dans le rapport de bogue mentionné dans la réponse de Parthian Shot n’a pas aidé. En outre, il n’était pas lié à SSH puisque la synchronisation était effectuée localement.

Le problème était dû à des erreurs sur le système de fichiers. Les corriger avec fsck résolu le problème. (Assurez-vous de vérifier qu’il ne rest pas de processus rsync .)

D’après mon expérience, cette erreur se produit car l’hôte local ne dispose pas encore de la clé de l’hôte distant et ssh rejette la connexion en arrière-plan.

 su - localUser -c "/usr/bin/rsync -avzh -e \"/bin/sshpass -p ${password} \ ssh -oPort=remotePort -l remoteUser\" \ remoteServer:/remoteFolder /localFolder" 

Dans le scénario expliqué, la commande ci-dessus échoue avec l’erreur:

 error in rsync protocol data stream (code 12) at io.c(605) [Receiver=3.0.9] 

sans inviter à accepter la clé distante. Pour résoudre le problème, connectez-vous simplement à l’hôte distant manuellement via ssh en tant que localUser, et lorsque vous êtes invité à accepter la clé d’hôte distant oui / non, sélectionnez “oui”.

Par la suite, l’exécution de la commande complète ci-dessus devrait fonctionner correctement.

REMARQUE : si vous vous connectez à la télécommande en utilisant @ [nom_serveur] et @ [nom_serveur]. [Nom_domaine], la clé de l’hôte distant doit être configurée pour les deux variantes, comme expliqué ci-dessus.

Assurez-vous que rsync est également installé sur le serveur distant .

Le même problème s’est produit mais disparaît après l’installation de rsync sur le serveur distant. Sans rsync sur le serveur distant, comment cela fonctionnera-t-il?

Cette erreur s’est produite lors du téléchargement / mise à jour de fichiers d’un système RHEL (client) vers un système FreeBSD (serveur). rsync a bien donné un message sur libiconv.so.3 qui était requirejs mais non disponible. libiconv.so.3 n’était pas sur RHEL (client). rsync sur RHEL (client) a démarré et a bien fonctionné. L’installation de rsync sur FreeBSD (serveur) a été interrompue. libiconv.so.3 était manquant. A partir de ce moment, rsync sur le système FreeBSD (serveur) n’a pas pu démarrer et a causé le problème mentionné sur le système RHEL (client). Réinstaller rsync sur FreeBSD (serveur) a résolu le problème.