如何使用rsync来备份整个文件系统 – 包含/排除规则文件

我正在尝试为我的FreeBSD服务器设置rsync备份

我已经放在一起看起来像这样的rsync命令:

rsync -avzhe ssh --progress --delete --delete-excluded \ --exclude-from=/root/rsync-excludes \ -e ssh / [email protected]: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的回答,我明白了,现在我的configuration如下所示:

 - *~ + /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 - /* 

在recursion遍历期间,rsync根据规则匹配每个目录。 说到/usr ,第一个匹配规则是- /* 。 因此/usr被排除在外,rsync甚至不会查看它下面的任何东西。 修正:显式地包含/usr ,以及/usr/local/usr/local/pgsql/var

rsync手册在“包含/排除模式规则”下有一个更广泛的讨论(当然不是最简单的阅读)。

它看起来像你越来越 – 一个文件系统的行为。 这可能是freebsd上的默认值。

我也看到你的目的地不是一个应该打破保留权限和所有权的根帐户。