Rsync

無法同步到 /etc 中的目標

  • December 23, 2021

從 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 是只讀文件系統的一部分呢?

/etcrsync 版本 3.2.0-1 引入了一個名為“ProtectSystem”的增強功能,除其他外,它可以防止對(參見https://download.samba.org/pub/rsync/NEWS )的寫訪問。這可以通過創建/etc/systemd/system/rsync.service.d/override.conf具有以下內容的文件來覆蓋:

[Service]
ProtectSystem=off

希望,在你最初的文章之後這麼久,這會有所幫助。

引用自:https://unix.stackexchange.com/questions/675700