2

Я делаю удаленное резервное копирование. Это мой конфиг 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  root@xx.xx.xx.xxx:/ 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 . Никакие другие упомянутые + файлы пути / подкаталоги не загружаются

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

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

2 ответа2

2

Синтаксис сложен, но не невозможен, как только вы его освоите, уловка заключается в том, чтобы понять, что вы должны перечислить каталоги, соответствующие друг другу, относительно корня рабочего каталога 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

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

0

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .