Я пытаюсь настроить резервное копирование rsync для своих серверов FreeBSD.
Я собрал команду rsync, которая выглядит так:
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, оставив остальные файлы без учета. Может кто-нибудь объяснить почему?
Согласно ответу Жиля, я понял это, и моя конфигурация теперь выглядит так:
- *~
+ /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.
Я также вижу, что ваш пункт назначения не является учетной записью root, что должно нарушить сохранение разрешений и владения.