Rsnapshot --exclude-from файл не работает для подкаталогов
Я делаю удаленное резервное копирование. Это мой конфиг 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 ответа
Синтаксис сложен, но не невозможен, как только вы его освоите, уловка заключается в том, чтобы понять, что вы должны перечислить каталоги, чтобы они соответствовали один за другим относительно корня рабочего каталога 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
никогда не создаст совпадение.. по той же причине!
Кажется, ваш шаблон исключения /*
означает, что любые пути, такие как /etc/something
будут исключены, если вы явно не включите /etc
а затем исключить тех, с кем вы не хотите /etc/*
,
Так добавь + /etc
а также - /etc/*
и аналогично для /var
а также /backups
а также /backups/mysqldb
,
Кстати, ранее я говорил, что вам нужно 2 файла, отдельные include_file и exclude_file. Вы можете сделать это, но на самом деле, если вы начинаете каждую строку в файле с явного "+" или "-", он переопределяет аспект включения или исключения по умолчанию. Таким образом, вы можете поместить все в один файл, при условии, что вы префикс строки, как вы сделали.