我已经放在一起看起来像这样的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上的默认值。
我也看到你的目的地不是一个应该打破保留权限和所有权的根帐户。