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


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 

..我不明白。除此之外,我在源和目标中都没有发现与rsyncor 相关的任何更改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

尝试执行远程更新测试,但使用命令行上的ssh命令而不是通过ssh登录会话。另外,请确保目标空间未满。
Skaperen 2012年

感谢您的建议。我用他们的结果编辑了问题。另外,目标空间根本
不满

Answers:


19

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

我在NAS管理员用户界面中发现,由于某些原因,在ControlPanel-> Users-> MyRSyncUser-> Edit->“ Priviliges setup”中,没有对房屋的读取/写入权限。我的RSYNC目的地在家里。

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


非常感谢 !那行得通!下次我更新DSM时,我将仔细检查权限
。–

8
如果我使用完整路径名(即,rsync something nas:/volume2/homes/foo/bar/而不是rsync something nas:bar/),则这似乎可行。
Jukka Suomela 2013年

对我来说,完整的路径是烦人的调试工作的最后一步。谢谢!
joevallender 2014年

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之后,我遇到了相同的问题。

我没有时间了解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>:

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

--rsync-path=<myhome>/rsync

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

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

这是我对DS212j所做的工作,只是我使用ipkg安装了新的rsync。Synology的安装ipkg的指导在这里
杰森

对于DSM 5.2,我在ipkg上找不到任何内容,因此对于我的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。将二进制文件放入NAS上的/ opt / bin /中。还必须通过将/ sbin / nologin更改为/ bin / sh来在/ etc / passwd中为我的备份用户提供外壳程序(应该有一些更安全的选项)。
thomasa88 '16

1

我遇到了同样的问题,但是我没有使用专用用户进行rsync。

我必须在“控制面板”->“共享文件夹”中修复权限。


0

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

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

现在正在工作。


-1

我通过以root而不是admin或普通用户身份登录来工作。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.