Rsync over ssh: "ПОМИЛКА: модуль читається лише" раптом з'явився


11

Я деякий час використовував rsync / ssh, щоб створити резервне копіювання вмісту спільного хоста в моїй особистої Synology NAS (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. Також переконайтеся, що цільовий простір не заповнений.
Скаперен

Дякуємо за ваші пропозиції. Я редагував питання з їх результатом. Також цільовий простір взагалі не заповнений (я вже був впевнений, але перевірив ще раз)
user978548

Відповіді:


19

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

У користувальницькому інтерфейсі адміністратора NAS я виявив, що чомусь у ControlPanel-> Users-> MyRSyncUser-> Edit -> «Налаштування привілеїв» не було доступу до дому для читання / запису. Мій пункт RSYNC знаходиться під будинками.

Налаштування цього привілейдж працювало для мене. Я сподіваюся, що це допомагає.


Дуже дякую ! Це спрацювало! Наступного разу, коли я
оновлюю

8
Це, здається, спрацює, якщо я використовую повні назви шляхів (тобто rsync something nas:/volume2/homes/foo/bar/замість rsync something nas:bar/).
Jukka Suomela

повний шлях був для мене останнім кроком у дратівливій боротьбі з налагодженням. Дякую!
joevallender

1
Проблема з цим рішенням (я не знайшов кращого) полягає в тому, що він надає користувачеві пільги для всіх будинків користувачів, а не лише їх власних.
CryingCyclops

У моєму випадку (з новою версією я вважаю), я також мав зміни синтаксису на основі модуля (див superuser.com/questions/559047 / ... )
sknat

6

Я позбувся ПОМИЛИ: модуль читається лише зміною віддаленого шляху з / var / services / homes / rsync на / volume2 / homes / rsync

DSM 5.1


4

З тією ж проблемою я зіткнувся після оновлення синології ds1010 + до dsm 4.1-2661.

У мене немає часу зрозуміти, що сталося з rsync, що надається синологією, але це не здається стандартним. Тож ось мій спосіб вирішення ...

Я не хотів зламати привілеї (багатокористувацькі налаштування), тому я перекомпілював rsync у статику на своєму ноутбуці, потім переніс бінарне на синологічний нас.

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

Тепер я можу продовжувати використовувати подвійність із rsync, додавши наступний параметр до подвійності:

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

Це те, що я робив зі своїм DS212j, за винятком того, що я використовував ipkg для установки нового rsync. Напрямки Synology для установки ipkg знаходяться тут .
Джейсон

Я не міг знайти нічого на ipkg для DSM 5.2, тому для свого DS215j я зробив наступне, щоб компілювати (у мене вже був перехресний компілятор-невідомо-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 через Putty's ssh. Мені довелося включити

"Панель управління -> Резервне копіювання мережі -> Увімкнути послугу резервного копіювання мережі".

Це працює зараз.


-1

У мене це працює, увійшовши як root, а не адміністратор або звичайний користувач.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.