rsyncd
我在使用(rsync 的守护进程版本)将文件从 macOS 备份到 Synology 服务器时遇到问题。这是失败的命令:
% rsync -rlcAXtgoDiv --fake-super ~/scripts rsync://seamus@SynologyNAS-1/backups/scripts-backup/ > ~/scripts/log.txt 2>&1
这是错误:(在我编写的日志文件和命令行中):
rsync: [sender] write error: Broken pipe (32)
rsync error: error in socket IO (code 10) at io.c(848) [sender=3.2.7]
经过一些实验,我认为我已经将问题的根源缩小到了该-A
选项的使用:
--acls, -A preserve ACLs (implies --perms)
--xattrs, -X preserve extended attributes
--fake-super store/recover privileged attrs using xattrs
据我了解,该--fake-super
选项允许rsync
将 ACL 存储为扩展属性,而不需要sudo
......但我对man rsync
.
进一步调查发现,在 Synology 服务器上,此行包含在/etc/rsyncd.conf
:
refuse options = acls
所以我编辑/etc/rsyncd.conf
并评论了该refuse options = acls
行。当我重新运行rsync
之前的命令时,它运行成功:)
但等一下——我确实有一个问题:
rsync
SynologyNAS-1 上报告的版本为:
rsync version 3.1.2 protocol version 31
- 除了版本差异(Synology 为 3.1.2;macOS 为 3.2.7)之外,Synology 上的文件系统
btrfs
对我来说就像 APFS 一样不透明!
我的问题是:我是否真的备份了我希望的正确的(与 MacOS 兼容的)ACL - 或者我只是让守卫保持沉默?对此有任何想法都将受到欢迎。
FWIW:我想我实际上正在做正确的备份因为当我进行备份时,rsyncd
我没有看到这些错误。我想切换到rsyncd
避免不必要的加密步骤(这全部在我的局域网上)并希望简化备份。