Rsync через ssh: «ОШИБКА: модуль только для чтения» внезапно появился


11

Некоторое время я использовал rsync / ssh для резервного копирования содержимого моего общего хоста на мой персональный NAS-сервер Synology (212j), и это работало довольно хорошо. Для информации я использую соединение без пароля ssh.

3 дня назад я обновил программное обеспечение NAS, и с тех пор (или, по крайней мере, я так считаю) резервное копирование больше не будет работать. Я получаю следующую ошибку на хосте:

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

..что я не понимаю кроме того, что ничего не изменилось, о чем я знаю как в источнике, так и в месте назначения, которое может быть связано с, rsyncили sshя проверил несколько вещей, и все, кажется, в порядке:

  • Я все еще могу подключиться sshс хоста к моему NAS с хорошим пользователем, так что ssh, такие как ключи, не изменились.
  • У меня также есть правильные права доступа к файлам на NAS (я проверил, а также попытался создать файлы, каталоги, .. с пользователем, использованным rsyncчерез ssh).

Я тут и там читал, что ошибка означает, что я должен убедиться, что у меня rsyncd.confесть на это право read only = no, но, насколько я знаю, я никогда не использовал, rsyncdа никогда ничего не настраивал для него, и до сих пор это работало как шарм. ,

Я использую следующую команду для резервного копирования:

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

Так что я застрял и действительно не могу понять, что случилось.


Редактировать:

Как указывалось в комментариях, я также пытался передавать команды в ssh (но не изнутри сеанса ssh), который работал как ожидалось, а также пробовал одну команду rsync, которая не работала, так же как и полная команда резервного копирования.

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

и

(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

Попробуйте выполнить тесты удаленного обновления, но с командами, переданными ssh в командной строке, а не через сеанс входа в систему ssh. Также убедитесь, что целевое пространство не заполнено.
Skaperen

Спасибо за ваши предложения. Я отредактировал вопрос с их результатом. Кроме того, целевое пространство не заполнено совсем (я уже был уверен, но я проверил еще раз)
user978548

Ответы:


19

У меня была такая же проблема после обновления моего Synology NAS до DSM 4.1. Я также делаю rsync через SSH. В моей ситуации с использованием rsync пользователь root @ ip также работал, но оставил файлы на сервере с владельцем root, который я не хотел.

Я обнаружил в пользовательском интерфейсе администратора NAS, что по какой-то причине в ControlPanel-> Users-> MyRSyncUser-> Edit -> "Настройка привилегий" не было доступа на чтение / запись к домам. Мой пункт назначения RSYNC находится под домами.

Установка этого привилегированного режима работала для меня. Надеюсь, это поможет.


Спасибо большое ! Это сработало! В следующий раз, когда я обновлю DSM, я дважды проверю разрешения ..
user978548

8
Это похоже на работу, если я использую полные пути (то есть rsync something nas:/volume2/homes/foo/bar/вместо rsync something nas:bar/).
Юкка Суомела

полный путь был для меня последним шагом в надоедливой схватке отладки. Спасибо!
Joevallender

1
Проблема с этим решением (я не нашел лучшего) заключается в том, что оно дает пользователю привилегии во всех домах пользователей, а не только в их собственных.
CryingCyclops

В моем случае (с новой версией я полагаю), я также должен был изменения синтаксиса на основе модуля (см superuser.com/questions/559047/... )
sknat

6

Я избавился от ОШИБКИ: модуль доступен только для чтения, изменив удаленный путь с / var / services / homes / rsync на / volume2 / homes / rsync

DSM 5.1


4

Я столкнулся с той же проблемой после обновления synology ds1010 + до dsm 4.1-2661.

У меня нет времени, чтобы понять, что случилось с rsync, предоставляемым синологией, но он не кажется стандартным. Так вот мой обходной путь ...

Я не хотел взламывать привилегии (многопользовательская настройка), поэтому я перекомпилировал rsync в static на своем ноутбуке, а затем перенес двоичный файл на 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>:

Вы можете указать rsync использовать ваш новый двоичный файл вместо файла по умолчанию с помощью этого параметра:

--rsync-path=<myhome>/rsync

Теперь я могу продолжать использовать duplicity с rsync, добавив следующий параметр к duplicity:

--rsync-options="--rsync-path=<myhome>/rsync"

Это то, что я сделал с моим DS212j, за исключением того, что я использовал ipkg для установки нового rsync. Инструкции Synology по установке ipkg находятся здесь .
Джейсон

В ipkg для DSM 5.2 я ничего не нашел, поэтому для своего DS215j я выполнил компиляцию следующим образом (у меня уже лежал кросс-компилятор arm-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. Поместите двоичный файл в / opt / bin / на NAS. Также нужно предоставить моему резервному пользователю оболочку в / etc / passwd, изменив / sbin / nologin на / bin / sh (должно быть несколько более безопасных опций).
thomasa88

1

У меня была такая же проблема, но я не использовал выделенного пользователя для rsync.

Мне пришлось исправить привилегии в Панели управления -> Общие папки.


0

У меня была похожая проблема при подключении к Synology 211j через ssh от Putty. Я должен был включить

«Панель управления -> Резервное копирование сети -> Включить службу резервного копирования сети».

Это работает сейчас.


-1

Я получил это, войдя в систему как root вместо администратора или обычного пользователя.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.