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

1888
Tuhin Bhuiyan

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

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

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

1

2 ответа на вопрос

1
Joris

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

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

Я изменил свое решение и пометил это лучше как окончательный ответ. Tuhin Bhuiyan 8 лет назад 0
0
meuh

It seems your exclude pattern /* means that any paths like /etc/something will be excluded unless you explicitly include /etc and then exclude those you don't want with /etc/*.

So add + /etc and - /etc/*, and similarly for /var and /backups and /backups/mysqldb.

By the way, I said earlier you needed 2 files, a separate include_file and exclude_file. You can do this, but in fact if you start each line in the file with an explicit '+ ' or '- ' it overrides the default include or exclude aspect. So you can put all in one file, provided you prefix the lines as you have done.

Спасибо за ответ. Я попробовал это решение, включив файл include и exclude отдельно, но не работая. Я все еще получаю только каталог `/ root` &` / usr`. Tuhin Bhuiyan 8 лет назад 0
Я добавил вероятное решение. meuh 8 лет назад 0
Итак, вы говорите, что я должен добавить `- / etc / apache2`, чтобы исключить его, и добавить только` + / etc` для копирования всего остального из `/ etc`? Разве это не то, что я делал раньше в одном файле выше? Tuhin Bhuiyan 8 лет назад 0
нет. вы говорите, что хотите включить `/ etc / apache2`, поэтому у него есть` + `. Сохраните эту запись. Я говорю добавить `- / etc / *` (это шаблон), чтобы исключить любые другие каталоги в `/ etc`, которые вы явно не упомянули в списке. Вы должны удалить `- / etc`, который я не заметил. meuh 8 лет назад 0
Спасибо :) . Я попытался добавить `- / etc / *` для исключения всех остальных, кроме тех, которые мне нужны с `+ / etc / что-то`, и удаления` - / etc / * `, но это не сработало. Это сработало, если я добавлю также `+ / etc` в явном виде, то это начнет работать. Похоже, мне нужно добавить оба `+ / etc` &` - / etc / * `вместе с` + / etc / что-нибудь`, чтобы включить все вложенные каталоги в каталог `/ etc`. Спасибо за ваше решение, хотя. Я отмечу это как принятый ответ, поскольку эта идея приводит меня к правильной настройке файла. :) Tuhin Bhuiyan 8 лет назад 0

Похожие вопросы