Настройка дедупликации в bacula. Bacula base backup.
Дедупликация в бакуле конечно не уровня symantec, но место и время экономит отлично. Суть проста — создается полная копия набора файлов и далее в требуемом job указывается опорное (base) задание или список заданий, от которого будет происходить full или inc бекап. Таким образом полный бекап набора файлов создается один раз, а далее все клиенты которые его используют бекапят только изменения в завимимости от текущего типа бекапа. Грубо говоря это будет либо diff, в случае с полным бекапом, либо increment\diff в случае с последующими бекапами в этом пуле.
Где это может быть полезно:
- например у нас 10 однотипных серверов. Условно преднастроенный и пожатый образ каждого сервера занимает 1 гигабайт. Если сделать предварительный bacula base backup и в job для резервного копирования каждого сервера добавить этот base — то мы экономим 10 гигабайт места на диске и время на его сжатие-передачу по сети каждый раз как он будет создаваться.
Второй пример — бекап большого объема. Например домашний архив с фотографиями. Изменяется он редко, но полный бекап длится около 12 часов. При правильной настройке и подключении bacula base — сокращаем время полного бекапа.
Настраивается все довольно просто:
Для начала добавляется задание на создание bacula base backup и pull в котором будут размещаться эти бекапы. Информация о пулле должна храниться вечно, а задания достаточно всего одного. Ну и никакого расписания в base job быть не должно — все запуски должны быть продуманы и делаться исключително руками. В качестве уровня резервного копирования необходимо указать base и желательно явно указать параметры
Accurate = yes Spool Attributes = yes
Таким образом конфиг будет таким:
# BACULA BASE JOB SET Job { Storage = bacula-base-sd Name = "BASE-bacula-base-backup" JobDefs = "DefaultJob" Client = bacula-base-fd FileSet = "FullRootSet" Pool = bacula-base Level = base Accurate = yes Spool Attributes = yes } Pool { Name = bacula-base # название пула Purge Oldest Volume = yes # Pool Type = Backup # Recycle = yes # повтороное автоматическое использование томов AutoPrune = yes # удалять записи из мускуля старше нижеуказанного значения Volume Retention = 150 year # через какое время том может быть снова использован File Retention = 150 year # через какое время информация будет удалена из базы Job Retention = 150 year # через какое время информация о задании будет удалена из базы Maximum Volumes = 1 # Limit number of Volumes in Pool Label Format = "bacula-base.pool." Maximum Volume Jobs = 1 }
Далее просто подключаем в существующее задание описанный выше base
Job { Priority = 12 Storage = atom-home-sd Name = atom-home-daily-backup Base = BASE-atom-home-backup JobDefs = "DefaultJob" Schedule="month" Client = atom-home-fd FileSet = "FullRootSet" Accurate = yes Spool Attributes = yes }
производим первый запуск задания BASE-bacula-base-backup, дожидаемся выполнения и так же, для проверки, руками запускаем задание bacula-base-sd.
Далее в отчетах можем увидеть следующие записи, говорящие о успешности процесса настройки.
При старте:
JobId 115: Using BaseJobId(s): 105 JobId 115: Sending Accurate information.
В самом отчете по завершении задания.
Base files/Used files: 199901/199891 (99.99%)
Из возможных проблем:
- Для нормальной работы с windows серверами требуется ветка bacula-dir и bacula-sd 5.2
- То же самое справедливо для linux.