ssh 上的 rsync:突然出现“错误:模块只读”

ssh 上的 rsync:突然出现“错误:模块只读”

我已经使用 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 上也拥有正确的文件权限(我检查过,并且还尝试通过 使用的用户创建文件、目录等rsyncssh

我在这里和那里读到,错误意味着我必须确保我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

答案1

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

我在 NAS 管理员用户界面中发现,出于某种原因,在控制面板->用户->MyRSyncUser->编辑->“权限设置”中没有对 home 的读/写访问权限。我的 RSYNC 目标位于 home 下。

将其设置为特权对我来说是有效的。希望这对您有所帮助。

答案2

我通过将远程路径从 /var/services/homes/rsync 更改为 /volume2/homes/rsync 来摆脱错误:模块是只读的

DSM 5.1

答案3

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

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

我不想破解权限(多用户设置),所以我在笔记本电脑上以静态方式重新编译了 rsync,然后将二进制文件传输到了汉学 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"

答案4

我在通过 Putty 的 ssh 连接到 Synology 211j 时遇到了类似的问题。我必须启用

“控制面板->网络备份->启用网络备份服务”。

它现在正在工作。

相关内容