Backup
如何使用 rsync 備份整個文件系統 - 包含/排除規則文件
我正在嘗試為我的 FreeBSD 伺服器設置 rsync 備份。
我整理了一個看起來像這樣的 rsync-command:
rsync -avzhe ssh --progress --delete --delete-excluded \ --exclude-from=/root/rsync-excludes \ -e ssh / backup@my.backup.box:Backups/location
我的
/root/rsync-excludes
文件如下所示:- *~ + /root + /usr/home + /usr/srv + /etc + /usr/local/etc + /var/backups + /usr/local/pgsql/backups - /root/.my.cnf - /*
但由於某種原因,它只備份 /etc 和 /root,而忽略了其他文件。有人可以解釋為什麼嗎?
解決方案
根據 Gilles 的回答,我想通了,我的配置現在看起來像這樣:
- *~ + /etc + /root + /usr/ + /usr/home + /usr/local/ + /usr/local/etc + /usr/local/git + /usr/local/pgsql/ + /usr/local/pgsql/backups - /usr/local/pgsql/* + /usr/local/varnish - /usr/local/* + /usr/srv - /usr/* + /var/ + /var/backups - /var/* - /root/.my.cnf - /*
在遞歸遍歷期間,rsync 根據規則匹配每個目錄。說到
/usr
,第一個匹配規則是- /*
. 因此/usr
被排除在外,並且 rsync 甚至不查看它下面的任何內容。修復:明確包括、/usr
以及和。/usr/local``/usr/local/pgsql``/var
rsync 手冊在“包含/排除模式規則”下進行了更廣泛的討論(誠然,這不是最容易閱讀的)。
看起來您正在獲得 –one-file-system 行為。這可能是 freebsd 上的預設設置。
我還看到您的目的地不是應該破壞保留權限和所有權的根帳戶。