Rsync over ssh: „ERROR: module is only read” nagle się pojawił

11

Od pewnego czasu używałem rsync / ssh do tworzenia kopii zapasowych zawartości hosta współdzielonego na moim osobistym serwerze Synology NAS (212j w tym przypadku) i działało to całkiem dobrze. Aby uzyskać informacje, używam połączenia bez hasła ssh.

3 dni temu zaktualizowałem oprogramowanie NAS i od tego czasu (a przynajmniej tak mi się wydaje, od tego czasu) kopia zapasowa nie będzie działać. Na hoście pojawia się następujący błąd:

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

.. których nie rozumiem. poza tym nic się nie zmieniło, o czym wiem zarówno w źródle, jak i miejscu docelowym, które mogą być powiązane rsynclub ssh, sprawdziłem kilka rzeczy i wszystko wydaje się w porządku:

  • Nadal mogę połączyć się sshz hosta do mojego serwera NAS z dobrym użytkownikiem, więc rzeczy ssh, takie jak klucze, nie uległy zmianie.
  • Mam też odpowiednie uprawnienia do plików na serwerze NAS (sprawdziłem, a także starał się tworzyć pliki, katalogi, .. z użytkownikiem używanej przez rsyncprzez ssh).

Czytam tu i tam, że błąd oznacza, że ​​muszę upewnić się, że mam do rsyncd.conftego prawo read only = no, ale o ile wiem, nigdy nie użyłem rsyncdtak dobrze, jak nigdy niczego nie konfigurowałem i do tej pory działało to jak urok. .

Używam następującego polecenia, aby wykonać kopię zapasową:

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

Więc utknąłem i naprawdę nie mogę zrozumieć, co się stało.


Edytować:

Jak zasugerowano w komentarzach, próbowałem również przekazać polecenia do ssh (ale nie z wnętrza sesji ssh), które działały zgodnie z oczekiwaniami, a także próbowałem pojedynczego polecenia rsync, które nie zadziałało, podobnie jak pełne polecenie tworzenia kopii zapasowej.

(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]

i

(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
użytkownik978548
źródło
Spróbuj wykonać testy zdalnej aktualizacji, ale z poleceniami przekazanymi ssh w wierszu poleceń zamiast sesji logowania ssh. Upewnij się także, że miejsce docelowe nie jest pełne.
Skaperen
Dziękuję za twoje sugestie. Zredagowałem pytanie z ich wynikiem. Ponadto miejsce docelowe wcale nie jest pełne (byłem już pewien, ale sprawdziłem ponownie)
user978548

Odpowiedzi:

19

Miałem ten sam problem po aktualizacji mojego serwera Synology NAS do DSM 4.1. Robię również rsync przez SSH. W mojej sytuacji użycie rsync użytkownika root @ ip również działało, ale pozostawiło pliki na serwerze z rootem właściciela, którego nie chciałem.

Znalazłem w interfejsie użytkownika administratora NAS, że z jakiegoś powodu w ControlPanel-> Użytkownicy-> MyRSyncUser-> Edytuj -> „Ustawienia uprawnień” nie było dostępu do odczytu / zapisu do domów. Moje miejsce docelowe RSYNC znajduje się pod domami.

Ustawienie tej uprzywilejowania działało dla mnie. Mam nadzieję, że to pomoże.

Jesper Munkholm
źródło
Dziękuję bardzo ! To się udało ! Następnym razem zaktualizuję DSM, ponownie sprawdzę uprawnienia ..
user978548,
8
To wydaje się działać, jeśli użyję pełnych nazw ścieżek (tj. rsync something nas:/volume2/homes/foo/bar/Zamiast rsync something nas:bar/).
Jukka Suomela,
pełna ścieżka była dla mnie ostatnim krokiem w irytującym procesie debugowania. dzięki!
joevallender
1
Problem z tym rozwiązaniem (nie znalazłem lepszego) polega na tym, że daje on uprawnienia użytkownikom we wszystkich domach użytkowników, nie tylko ich własnych.
CryingCyclops
W moim przypadku (zakładam, że z nowszą wersją) musiałem także zmienić składnię na moduły (patrz superuser.com/questions/559047/… )
sknat
6

Pozbyłem się BŁĘDU: moduł jest odczytywany tylko przez zmianę ścieżki zdalnej z / var / services / homes / rsync na / volume2 / homes / rsync

DSM 5.1

Reio
źródło
4

Ten sam problem napotkałem po aktualizacji synology ds1010 + do dsm 4.1-2661.

Nie mam czasu, aby zrozumieć, co stało się z rsync dostarczonym przez synology, ale nie wydaje się to standardowe. Oto moje obejście ...

Nie chciałem zhakować uprawnień (konfiguracja dla wielu użytkowników), więc ponownie skompilowałem rsync w static na moim laptopie, a następnie przeniosłem plik binarny na sinologię 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>:

Możesz powiedzieć rsync, aby używał twojego nowego pliku binarnego zamiast domyślnego, za pomocą tego parametru:

--rsync-path=<myhome>/rsync

Teraz mogę kontynuować używanie duplikatu w rsync, dodając do duplikatu następujący parametr:

--rsync-options="--rsync-path=<myhome>/rsync"
Hyacinthe Cartiaux
źródło
Tak zrobiłem z moim DS212j, z wyjątkiem tego, że użyłem ipkg do zainstalowania nowego rsync. Wskazówki Synology dotyczące instalowania ipkg są tutaj .
Jason
Nie mogłem znaleźć niczego na ipkg dla DSM 5.2, więc dla mojego DS215j wykonałem następujące kompilacje (już miałem wokół siebie kompilator cross-compiler-unknown-eabi-gcc) ./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. Umieść plik binarny w / opt / bin / na NAS. Muszę również dać mojemu użytkownikowi kopii zapasowej powłokę w / etc / passwd poprzez zmianę / sbin / nologin na / bin / sh (Powinny być pewne bardziej bezpieczne opcje).
thomasa88
1

Miałem ten sam problem, ale nie używałem dedykowanego użytkownika do rsync.

Musiałem naprawić uprawnienia w Panelu sterowania -> Foldery udostępnione.

użytkownik141612
źródło
0

Miałem podobny problem podczas łączenia się z Synology 211j przez ssh Putty. Musiałem włączyć

„Panel sterowania -> Kopia zapasowa sieci -> Włącz usługę kopii zapasowej sieci”.

Już działa.

Rene Duris
źródło
-1

Udało mi się to, logując się jako root zamiast administratora lub zwykłego użytkownika.

Leon
źródło