web-dev-qa-db-fra.com

rsync continue à déconnecter: tuyau brisé

J'utilise rsync pour sauvegarder mon annuaire de domicile. Cela fonctionne bien depuis longtemps. Voici la commande que j'utilise:

rsync \
    -pavz \
    --delete \
    --exclude 'mnt/' \
    --exclude '.cache/' \
    --exclude 'Videos/' \
    --exclude 'Music/' \
    --exclude 'Documents/virtualbox' \
    /home/"${USER}" "${server}":"${dir}" 2>> "${errorFile}"

Cependant, j'ai commuté le serveur sur lequel je sauvegarde et maintenant rsync commence et fonctionne pendant quelques secondes (jusqu'à quelques minutes), mais s'arrête ensuite avec le message d'erreur

packet_write_wait: Connection to x.x.x.x: Broken pipe
rsync: [sender] write error: Broken pipe (32)
rsync error: unexplained error (code 255) at io.c(820) [sender=3.1.1]

Comme il fonctionne sur d'autres serveurs, je soupçonne que le problème est la connexion ou le serveur lui-même. La connexion semble être stable. Je suis connecté via un câble et je ne vois aucune interruption. J'ai aussi essayé de pinger le serveur en faisant la sauvegarde. Le ping a un taux de réponse de 100%, même lorsque la sauvegarde se décompose.

J'utilise kerberos pour vous authentifier sur le serveur distant.

J'ai essayé plusieurs combinaisons avec ServerAliveInterval, ServerAliveCountMax ou ClientAliveInterval dans mon ~/.ssh/config, mais en vain.

Il se pourrait qu'il y ait quelque chose d'exécution sur le serveur qui tue la commande rsync pour une raison quelconque, mais je ne sais pas comment enquêter dans cela. Des idées?

14
pfnuesel

J'avais le même problème sur Osx El Capitan et j'ai réparé cela par la mise à niveau vers RSYNC V3.11. Le problème se passait pour moi sur v2.6.9.

3
Bruno

Kerberos n'est que pour l'authentification, qui ne devrait provoquer aucun problème après avoir créé une connexion réussie.

Avez-vous essayé d'utiliser aussi le démon RSYNC?

Sont vos serveurs sur le même réseau ou avez-vous un pare-feu/routeur?

Vous pouvez essayer de configurer une session NetCat entre les serveurs, c'est un moyen simple d'essayer si vous avez des problèmes de connexion entre vos serveurs.

Sur le premier serveur:

nc -lk <port-number>

Et sur le client

nc <server> <port-number>

Vous pouvez laisser la connexion ouverte et voir si la connexion le garde ou si vous perdez la connexion. Vous pouvez également essayer d'écrire quelque chose sur le client, voyez qu'il se termine de l'autre côté.

2
toed

la seule fois où j'ai eu un problème comme celui-ci avec RSYNC, je l'ai suivi sur un port Ethernet de rechange sur une autre machine qui avait la même adresse IP que mon serveur cible. Si RSYNC est flaky, c'est presque sûrement une fiabilité de réseau ou un problème de configuration (dans mes cas).

1
Nathan Siemers

J'ai rencontré un problème similaire lors de l'exécution rsync _ ou manuellement (avec cp, scp ou dans gnome nautilus) copie de gros fichiers d'un bureau Linux à une faible puissance ARM _ Linux NAS sur un réseau câblé gigabit (no kerberos dans ma configuration). Les lecteurs NAS sont partagés avec samba et sont montés sur le client à l'aide de cifs. La solution pour moi était de monter le système de fichiers NAS du client sans aucune mise en cache (voir aussi Mount.Cifs Pages de Man):

Sudo mount -t cifs //server.lan/somedir /mnt/somedir/ -o cache=none

Alternativement, lors du montage du lecteur NAS sur le client à l'aide de gvfs in nautilus Ce problème ne persisterait pas lors de la copie de fichiers volumineux (mais cela ne fonctionne pas en combinaison avec rsync cependant).

Faites de l'écriture Linux dans le système de fichiers réseau simultanément avec les lectures de disque locales Élaborer plus loin pourquoi ce problème pourrait se produire.

1
davidovitch

Vous avez quelque chose sur le serveur distant qui écrit à stdout. Cela pourrait être dans votre .profile ou .bash_profile. Cela pourrait être quelque chose de moins évident comme stty ou mesg. En cas de doute, copiez une transcription sur votre question de votre connexion au serveur (rédiger le nom d'hôte par tous les moyens).

1
roaima

Il suffit de mettre à niveau vos versions RSYNC pour vous assurer qu'elles sont exactement la même sur les PC d'envoi et de réception. Voir ma réponse ici: https://serverfault.com/questions/883487/Unable-a-rync-due-a-broken-ppe/988794#988794 .

0
Gabriel Staples