Я делаю удаленное резервное копирование. Это моя конфигурация 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. Вы можете сделать это, но на самом деле, если вы начнете каждую строку в файле с явного '+' или '-', это переопределитпо умолчаниювключить или исключить аспект. Таким образом, вы можете поместить все в один файл, при условии, что вы добавите префиксы строк, как вы сделали.