Rsync over ssh:“ERROR: module is read only”突然出现

use*_*548 17 backup ssh rsync synology

一段时间以来,我一直使用 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 
Run Code Online (Sandbox Code Playgroud)

..我不明白。除了我所知道的与rsyncor相关的源和目标中没有任何变化之外ssh,我确实检查了一些事情,一切似乎都很好:

  • 我仍然可以通过ssh好用户从主机连接到我的 NAS,所以像密钥这样的 ssh 东西没有改变。
  • 我在 NAS 上也有正确的文件权限(我检查过,并尝试使用rsyncthrough使用的用户创建文件、目录等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/
Run Code Online (Sandbox Code Playgroud)

所以我被卡住了,真的无法弄清楚发生了什么。


编辑:

正如评论中所建议的那样,我还尝试将命令传递给 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]
Run Code Online (Sandbox Code Playgroud)

(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
Run Code Online (Sandbox Code Playgroud)

小智 21

将 Synology NAS 更新到 DSM 4.1 后,我遇到了同样的问题。我也通过 SSH 进行 rsync。在我的情况下,使用 rsync 用户 root@ip 也可以工作,但将服务器上的文件保留在我不想要的所有者 root 中。

我在 NAS 管理员用户界面中发现,由于某种原因,在 ControlPanel->Users->MyRSyncUser->Edit->"Priviliges setup" 中没有对家庭的读/写访问权限。我的 RSYNC 目的地在住宅下。

将此设置为特权对我有用。我希望这有帮助。

  • 如果我使用完整路径名(即,`rsync something nas:/volume2/homes/foo/bar/` 而不是`rsync something nas:bar/`),这似乎有效。 (11认同)
  • 我遇到了这个问题,但它不是由权限引起的,而只是由拼写错误的远程路径引起的。Synology rsync 不会告诉您 -- 只是您指定的路径是“只读” (2认同)

小智 9

我摆脱了 ERROR: module is read only 通过将远程路径从 /var/services/homes/rsync 更改为 /volume2/homes/rsync

帝斯曼 5.1


小智 5

将 Synology ds1010+ 升级到 dsm 4.1-2661 后,我遇到了同样的问题。

我没有时间了解 Synology 提供的 rsync 发生了什么,但它似乎并不标准。所以这是我的解决方法......

我不想破解权限(多用户设置),所以我在我的笔记本电脑上重新编译了静态的rsync,然后我在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>:
Run Code Online (Sandbox Code Playgroud)

您可以使用以下参数告诉 rsync 使用新的二进制文件而不是默认的二进制文件:

--rsync-path=<myhome>/rsync
Run Code Online (Sandbox Code Playgroud)

现在我可以通过将以下参数添加到 duplicity 来继续在 rsync 中使用 duplicity:

--rsync-options="--rsync-path=<myhome>/rsync"
Run Code Online (Sandbox Code Playgroud)