从 Debian 10 升级到 11 后,/etc 中某个目标的 rsync 作业不再起作用。
在服务器(目标)端我有这个:
uid = root
gid = root
hosts allow = mysender
[mymodule]
# NOGO
path = /etc/tmp
# GO
# path = /root/tmp
comment = Just for testing
read only = false
在客户端(源)我输入以下命令:
rsync -a /etc/temp/test myserver::mymodule
这使得 rsync 失败并显示以下消息:
rsync: [generator] recv_generator: mkdir "/test" (in mymodule) failed: Read-only file system (30)
*** Skipping any contents from this failed directory ***
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1333) [sender=3.2.3]
将服务器配置为使用 /etc 之外的路径(例如 /root/tmp)确实可以按预期工作。
根文件系统(还包含 /etc 目录)是不是当然是只读安装的,而且它是干净的。为什么 rsyncd 认为 /etc 是只读文件系统的一部分?
答案1
rsync 版本 3.2.0-1 引入了一项称为“ProtectSystem”的增强功能,除其他外,它可以防止对/etc
(请参阅https://download.samba.org/pub/rsync/NEWS)。这可以通过创建/etc/systemd/system/rsync.service.d/override.conf
包含以下内容的文件来覆盖:
[Service]
ProtectSystem=off
希望这对您在初次发帖后很长时间内有所帮助。