Rsync通过SSH:“错误:模块是只读”突然出现

我曾经用rsync / ssh把我的共享主机内容备份到我个人的Synology NAS(212j),而且效果很好。 有关信息,我使用无密码的ssh连接。

3天前,我更新了我的NAS软件,自从(或者至less我相信那是因为那个),备份将不再起作用。 我在主机上得到以下错误:

 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上的文件权限(我检查,也尝试创build文件,目录,与rsync通过ssh使用的用户)。

我在这里和那里看到,错误意味着我必须确保我的rsyncd.conf有正确的read only = no ,但据我所知,我从来没有使用过rsyncd ,也没有为它configuration过任何东西,直到现在它像一个魅力工作..

我使用以下命令来执行备份:

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

所以我卡住了,真的不知道发生了什么事。


编辑:

正如在评论中所build议的,我也尝试传递命令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 

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

我在NASpipe理员用户界面中发现,出于某种原因,在ControlPanel->用户 – > MyRSyncUser->编辑 – >“权限设置”,没有读/写访问的家园。 我的RSYNC目的地是在家中。

设置这privilidge为我工作。 我希望这有帮助。

在将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 

现在,我可以继续使用rsync进行复制,通过添加以下参数来复制:

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

我摆脱了错误:模块是只读的通过更改远程path从/ var / services / homes / rsync到/ volume2 / homes / rsync

DSM 5.1

我有同样的问题,但我没有使用rsync的专用用户。

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

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

“控制面板 – >networking备份 – >启用networking备份服务”。

现在正在工作。

我通过以root身份login,而不是pipe理员或普通用户login。