Rsnapshot --exclude-from file не работает для подкаталогов

Rsnapshot --exclude-from file не работает для подкаталогов

Я делаю удаленное резервное копирование. Это моя конфигурация rsnapshot.

config_version  1.2
snapshot_root   /data/sbackup/
cmd_cp  /bin/cp
cmd_rm  /bin/rm
cmd_rsync       /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger      /usr/bin/logger
interval        alpha   2
interval        beta    2
interval        gamma   2
interval        delta   1
ssh_args    -p xxxx
verbose         3
loglevel        4
logfile /var/log/rsnapshot/
exclude_file    /data/xxxxx.exclude
rsync_long_args --stats --delete --numeric-ids --relative   --delete-excluded
lockfile        /var/run/rsnapshot.pid
backup  [email protected]:/ xxxxx-server/

Я добавил эти нижние строки в exclude_file

+ /root
+ /backups/mysqldb/latest
+ /etc/automysqlbackup
+ /etc/imscp
+ /etc/postfix
+ /etc/fail2ban
+ /etc/dovecot
+ /etc/apache2
+ /etc/ssh
+ /etc/ssl
+ /etc/php5
+ /etc/cron.d
+ /usr
+ /var/mail
+ /var/www
+ /var/log
- /var/cache
- /boot
- /home
- /opt
- /etc
- /*

Но после выполнения rsync я получаю только полные rootи usrкаталоги. Никакие другие указанные +пути файлов/подкаталогов не загружаются.

Я хочу, +чтобы каталоги были и включаемыми, и -не включаемыми.

Что я делаю не так?

решение1

Синтаксис сложный, но не невозможный, как только вы освоитесь; фокус в том, чтобы понять, что вам нужно перечислить каталоги для сопоставления один за другим относительно корня рабочего каталога rsync/rsnapshot:

скажем, вы хотите включить каталог /var/log и ничего больше

+ /var  # we want the var directory
+ /var/log # we want the var/log directory
- /var/* # we dont want anything else in the var directory
- /* # we don't want anything else at all

Надеюсь, вы это заметили: сначала у нас есть совпадение в /var, затем в /var/log, затем в /var/* и затем в /*.

Это не сработает.

+ /var/log
- /*

потому что /var/log не сгенерирует совпадение, как ни странно....

В вашем примере ваш первый

+ /backups/mysqldb/latest

никогда не создаст совпадение... по той же причине!

решение2

Похоже, ваш шаблон исключения /*означает, что любые пути типа . /etc/somethingбудут исключены, если вы явно не включите /etc, а затем не исключите те, которые вам не нужны, с помощью /etc/*.

Итак, добавьте + /etcи - /etc/*, и аналогично для /varи /backupsи /backups/mysqldb.

Кстати, я уже говорил, что вам нужно 2 файла, отдельный include_file и exclude_file. Вы можете сделать это, но на самом деле, если вы начнете каждую строку в файле с явного '+' или '-', это переопределитпо умолчаниювключить или исключить аспект. Таким образом, вы можете поместить все в один файл, при условии, что вы добавите префиксы строк, как вы сделали.

Связанный контент