Настройка дедупликации в 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.