Rsync sur ssh: "ERREUR: le module est en lecture seule" est soudainement apparu

11

J'ai utilisé depuis un certain temps rsync / ssh pour sauvegarder le contenu de mon hôte partagé sur mon Synology NAS personnel (212j d'ailleurs), et cela a très bien fonctionné. Pour plus d'informations, j'utilise une sshconnexion sans mot de passe .

Il y a 3 jours, j'ai mis à jour mon logiciel NAS et depuis (ou du moins je pense que c'est depuis ça), la sauvegarde ne fonctionnera plus. J'obtiens l'erreur suivante sur l'hôte:

rsync: writefd_unbuffered failed to write 4 bytes to socket [sender]: Broken pipe (32)
ERROR: module is read only 

..que je ne comprends pas. à part ça, rien de changé à la fois dans la source et la destination qui peut être lié à rsyncou ssh, j'ai vérifié quelques choses et tout semble aller bien:

  • Je peux toujours me connecter sshde l'hôte à mon NAS avec le bon utilisateur, donc les trucs ssh comme les clés n'ont pas changé.
  • J'ai également les autorisations de fichiers correctes sur le NAS (j'ai vérifié et j'ai également essayé de créer des fichiers, des répertoires, .. avec l'utilisateur utilisé par rsyncvia ssh).

J'ai lu ici et là que l'erreur signifie que je dois m'assurer que j'ai rsyncd.confle droit read only = no, mais pour autant que je sache, je n'ai jamais utilisé rsyncdaussi bien que je n'ai jamais rien configuré pour cela et jusqu'à présent, cela fonctionnait comme un charme. .

J'utilise la commande suivante pour faire la sauvegarde:

rsync -ab --recursive \
--files-from="$FILES_FROM" \
--backup-dir=backup_$SUFFIX \
--delete \
--filter='protect backup_*' \
$WDIRECTORY/ \
remote_backup:$REMOTE_BACKUP/

Je suis donc coincé et je ne peux vraiment pas comprendre ce qui s'est passé.


Éditer:

Comme suggéré dans les commentaires, j'ai également essayé de passer des commandes à ssh (mais pas à l'intérieur d'une session ssh), qui fonctionnaient comme prévu, et j'ai également essayé une seule commande rsync, qui n'a pas fonctionné, échouant comme la commande de sauvegarde complète.

(sharedHost):hostuser:~ > touch test.txt
(sharedHost):hostuser:~ > rsync test.txt remote_backup:backups/test.txt
ERROR: module is read only
rsync error: syntax or usage error (code 1) at main.c(1034) [Receiver=3.0.8]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(601) [sender=3.0.7]

et

(sharedHost):hostuser:~ > ssh remote_backup 'touch /abs_path_to_backups/backups/test2.txt && echo "ProoF" > /abs_path_to_backups/backups/test2.txt'
(sharedHost):hostuser:~ > ssh remote_backup 'cat /abs_path_to_backups/backups/test2.txt'
ProoF
user978548
la source
Essayez de faire les tests de mise à jour à distance, mais avec les commandes données à ssh sur la ligne de commande au lieu de passer par une session de connexion ssh. Assurez-vous également que l'espace cible n'est pas plein.
Skaperen
Merci pour vos suggestions. J'ai édité la question avec leur résultat. De plus, l'espace cible n'est pas plein du tout (j'étais déjà sûr, mais j'ai vérifié à nouveau)
user978548

Réponses:

19

J'ai eu le même problème après la mise à jour de mon Synology NAS vers DSM 4.1. Je fais également rsync sur SSH. Dans ma situation, l'utilisation de l'utilisateur root @ ip rsync a également fonctionné, mais a laissé les fichiers sur le serveur avec la racine propriétaire, ce que je ne voulais pas.

J'ai trouvé dans l'interface utilisateur d'administration NAS que, pour une raison quelconque, dans ControlPanel-> Users-> MyRSyncUser-> Edit -> "Priviliges setup", il n'y avait pas d'accès en lecture / écriture aux maisons. Ma destination RSYNC est sous les maisons.

Définir ceci sur Privilidge a fonctionné pour moi. J'espère que ça aide.

Jesper Munkholm
la source
Merci beaucoup ! Ça a marché ! La prochaine fois que je mettrai à jour DSM, je revérifierai les autorisations.
user978548
8
Cela semble fonctionner si j'utilise des noms de chemin complets (c'est-à-dire rsync something nas:/volume2/homes/foo/bar/au lieu de rsync something nas:bar/).
Jukka Suomela
le chemin complet était la dernière étape pour moi dans un épisode ennuyeux de débogage. Merci!
joevallender
1
Le problème avec cette solution (je n'en ai pas trouvé de meilleure) est qu'elle donne à l'utilisateur des privilèges sur tous les foyers d'utilisateurs, pas seulement sur les leurs.
CryingCyclops
Dans mon cas (avec une version plus récente, je suppose), j'ai également dû passer à une syntaxe basée sur un module (voir superuser.com/questions/559047/… )
sknat
6

Je me suis débarrassé de ERREUR: le module est en lecture seule en changeant le chemin d'accès distant de / var / services / homes / rsync en / volume2 / homes / rsync

DSM 5.1

Reio
la source
4

J'ai rencontré le même problème après la mise à niveau d'un synology ds1010 + vers dsm 4.1-2661.

Je n'ai pas le temps de comprendre ce qui est arrivé au rsync fourni par synology mais cela ne semble pas standard. Voici donc ma solution ...

Je ne voulais pas pirater les privilèges (configuration multi-utilisateur), j'ai donc recompilé rsync en statique sur mon ordinateur portable, puis j'ai transféré le binaire sur le sinology nas.

wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
tar xzvf rsync-3.0.9.tar.gz
cd rsync-3.0.9
export CFLAGS=--static
./configure
make

scp rsync <login>@<nas_hostname>:

Vous pouvez dire à rsync d'utiliser votre nouveau binaire au lieu de celui par défaut, avec ce paramètre:

--rsync-path=<myhome>/rsync

Maintenant, je peux continuer à utiliser la duplicité avec rsync, en ajoutant le paramètre suivant à la duplicité:

--rsync-options="--rsync-path=<myhome>/rsync"
Hyacinthe Cartiaux
la source
C'est ce que j'ai fait avec mon DS212j, sauf que j'ai utilisé ipkg pour installer le nouveau rsync. Les instructions de Synology pour installer ipkg sont ici .
Jason
Je n'ai rien trouvé sur ipkg pour DSM 5.2, donc pour mon DS215j j'ai fait ce qui suit pour compiler (j'avais déjà le bras du compilateur croisé-unknown-eabi-gcc qui traîne) ./configure --host=armv7 CFLAGS=-static EXEEXT=-static --prefix=/opt CC=arm-unknown-linux-gnueabi-gcc && make && arm-unknown-linux-gnueabi-strip rsync && make DESTDIR=$PWD/../prefix install. Mettez le binaire dans / opt / bin / sur le NAS. Je dois également donner à mon utilisateur de sauvegarde un shell dans / etc / passwd en remplaçant / sbin / nologin par / bin / sh (il devrait y avoir des options plus sécurisées).
thomasa88
1

J'ai eu le même genre de problème, mais je n'utilisais pas un utilisateur dédié pour rsync.

J'ai dû fixer des privilèges dans le Panneau de configuration -> Dossiers partagés.

user141612
la source
0

J'ai eu un problème similaire lors de la connexion à Synology 211j via ssh de Putty. Je devais activer

"Panneau de configuration -> Sauvegarde réseau -> Activer le service de sauvegarde réseau".

Il fonctionne maintenant.

René Duris
la source
-1

Je l'ai fait fonctionner en me connectant en tant que root au lieu d'administrateur ou d'utilisateur ordinaire.

Léon
la source