Настройка системы резервного копирования Bacula

Этап 4 — Настройка Director

Этот этап является самым сложным, так как конфигурационный файл демона Director содержит большое количество параметров.

Для облегчения понимания и дальнейшего сопровождения я решил разделить монолитный конфигурационный файл на несколько частей. Для этого я создал две директории:

  • /etc/bacula/include/
  • /etc/bacula/hosts.d/

Директория /etc/bacula/include/ предназначена для параметров, общих для двух или более хостов, данные с которых будут резервироваться. Директория /etc/bacula/hosts.d/ будет содержать параметры конкрентых хостов.

Основной конфигурационный файл демона Director после разделения принял следующий вид:

# Основные параметры Director'а
Director {
  # имя демона (это имя далее используется во всех
  # SD и FD, с которыми должен работать этот Director
  Name = S1-dir
  # Порт
  DIRport = 9101
  QueryFile = "/usr/libexec/bacula/query.sql"
  WorkingDirectory = "/var/lib/bacula"
  PidDirectory = "/var/run"
  # максимальное количество обновременно выполняемых заданий
  Maximum Concurrent Jobs = 3
  # пароль, который будет использовать Director при
  # подключении к SD и FD
  Password = "somepass"
}

# =========== Хранилище =========== 

Storage {
  # имя хранилища
  Name = S1File
  # адрес, по которому к хранилищу могут подключаться
  # Director и FD (нелья использовать localhost!!!!)
  Address = s1.ppc-zone.ru
  # порт
  SDPort = 9103
  # пароль для подключения к SD
  Password = somepass
  # имя физического хранилища в SD
  Device = S1FileStorage
  # тип хранилища
  Media Type = File
}

# =========== КАТАЛОГ (SQL) ===========

Catalog {
  Name = MyCatalog
  dbname = "bacula"; dbuser = "bacula"; dbpassword = "dbpass"
}

# =========== КОНСОЛЬ ===========

Console {
  Name = ppc-zone.ru-mon
  Password = somepass
  CommandACL = status, .status
}

# Подключение дополнительных файлов
@/etc/bacula/include/schedules.conf
@/etc/bacula/include/messages.conf
@/etc/bacula/include/pools.conf
@/etc/bacula/include/jobs.conf
@|"sh -c 'for f in /etc/bacula/hosts.d/*.conf ; do echo @${f} ; done'"

Переходим к файлам, расположенным в директории /etc/bacula/include/.

Файл /etc/bacula/include/schedules.conf содержит список расписаний выполнения заданий. В моем случае всего одно расписание:

# =========== РАСПИСАНИЯ ===========

Schedule {
  Name = "WeeklyCycle"
  Run = Full 1st sun at 5:30
  Run = Differential 2nd-5th sun at 5:30
  Run = Incremental mon-sat at 5:30
}

Файл /etc/bacula/include/messages.conf содержит настройки отправки оповещений:

# =========== ОПОВЕЩЕНИЯ ===========

# Изменены команда отправления сообщений, содержит адрес отправителя bacula@domain. По умолчанию этого адреса нет.
Messages {
  Name = Standard
  mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \\" -s \"Bacula: %t %e of %c %l\" %r"
  operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \\" -s \"Bacula: Intervention needed for %j\" %r"
  mail = username@domain = all, !skipped            
  operator = username@domain = mount
  console = all, !skipped, !saved

  append = "/var/lib/bacula/log" = all, !skipped
  catalog = all
}

Файл /etc/bacula/include/pools.conf предназначен для описания пулов. Пулы содержат параметры контейнеров, содержащих резервные копии. В данном случае, так как хранилище одно и имеет тип File, пул содержит параметры файлов:

# =========== ПУЛЫ =========== 

Pool {
  Name = MyPool
  Pool Type = Backup
  Recycle = yes
  Recycle Oldest Volume = yes
  Purge Oldest Volume = yes
  AutoPrune = yes
  Volume Retention = 180 days
  Maximum Volume Bytes = 50G
  Maximum Volumes = 100
  LabelFormat = "vol_"
}

Файл /etc/bacula/include/jobs.conf должен содержать параметры шаблонов заданий. Так как я шаблоны создавать не стал, файл остался пустым (до лучших времен, так сказать).

Завершающий этап настройки Bacula — создание файлов, содержащих параметры подлежащих резервированию хостов, в директории /etc/bacula/hosts.d/. Имена файлов я задаю по шаблону <hostname.domain>.conf, это упрощает сопровождение.

Каждый файл с параметрами хостов должен содержать разделы:

  • Client — параметры подключения к серверу, данные с которого будут резервироваться.
  • FileSet — список резервируемых/игнорируемых файлов и некоторые параметры их хранения.
  • Job — задания резервирования/восстановления файлов.

Дополнительно эти файлы могут содержать любые иные параметры, уникальные для конкретного хоста, например расписания.

Файл, содержащий параметры для сервера S2 — s2.ppc-zone.ru.conf:

# Параметры доступа к клиенту сервера S2
Client {
  Name = S2-fd
  Address = s2.ppc-zone.ru    # нужно указывать DNS-имя
  FDPort = 9102
  Catalog = MyCatalog
  Password = "somepass"
  File Retention = 30 days
  Job Retention = 2 months
  AutoPrune = yes
}

# Список файлов, подлежащих резервному копированию,
# для сервера S2
FileSet {
  Name = "S2Set"
  Ignore FileSet Changes = yes
  Include {
    Options {
      signature = MD5
      compression = GZIP
      checkfilechanges = yes
      noatime = yes
      exclude = yes
      wilddir = "lost+found"
      wilddir = ".snap"
    }
    File = "/etc"
    File = "/var/www"
    File = "/opt/halflife"
  }
}

# Задание резервного копирования сервера S2
Job {
  Name = S2Backup
  Type = Backup
  Level = Full
  Client = S2-fd
  FileSet = S2Set
  Schedule = WeeklyCycle
  Storage = S1File
  Priority = 10
  Messages = Standard
  Pool = MyPool
  Write Bootstrap = "/var/lib/bacula/%c.bsr"
  # резервирование myslq
  ClientRunBeforeJob = "/root/scripts/mysql/backup_create"
  ClientRunAfterJob = "/root/scripts/mysql/backup_delete"
}

# Задание восстановления файлов из резервных копий сервера S2
Job {
  Name = S2RestoreFiles
  Type = Restore
  Client = S2-fd                 
  FileSet = S2Set
  Storage = S1File
  Pool = MyPool
  Messages = Standard
  Where = /tmp
}

Для второго сервера файл выглядит аналогично.

После запуска всех модулей Bacula на всех серверах система резервирования начнет работать. Проверить работу системы путем ручного запуска заданий можно с помощью консоли Bacula — bconsole.

Комментарии закрыты.

css.php