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

Что такое система резервного копирования Bacula, каковы ее функции, в чем преимущества и недостатки — очень широко освещено на просторах интернета. Но однажды, начав ее настраивать, я столкнулся с не совсем понятным описанием процесса настройки.
Вот как я настраивал систему резервного копирования Bacula на серверах проекта PPC-ZONE

Появилась задача резервного копирования двух серверов проекта PPC-ZONE (S1, S2), резервирование было решено организовать с помощью Bacula.

Установка Bacula версии 5.2.13 в операционной системе Gentoo на сервере S1 прошла совершенно гладко. В директории /etc/bacula появились 4 конфигурационных файла:

  • bacula-dir.conf — конфиг Director’а,
  • bacula-fd.conf — конфиг File Daemon’а,
  • bacula-sd.conf — конфиг Storage Daemon’а,
  • bconsole.conf — конфиг консоли Bacula bconsole.

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

Этап 1 — Настройка базы данных

Для хранения информации о резервных копиях Bacula использует систему управления базами данных. СУБД может быть mysql, postgresql, sqlite. Я использовал СУБД mysql (вернее mariadb, клон mysql с движком от Percona и другими улучшениями).

Имя базы данных по умолчанию — bacula (лучше всего использовать именно это имя, так как оно прописано в скриптах). Создать базу данных можно вручную:

create database bacula;

либо скриптом:

/usr/libexec/bacula/create_bacula_database -u root -p

Далее, необходимо создать рабочие таблицы в базе данных bacula:

/usr/libexec/bacula/make_bacula_tables -u root -p

И, в заключении первого этапа, нужно создать учетную запись в mysql, которую будет использовать Bacula. Для примера, я создам учетную запись bacula с паролем dbpass:

grant all privileges on bacula.* to 'bacula'@'localhost' identified by 'dbpass';
flush privileges;

Указанные в первом этапе параметры используются в конфигурационном файле Director’а.

Этап 2 — Настройка Storage Daemon

В общем случае хранилищ может быть несколько и они могут быть физически разными устройствами. В данной ситуации хранилище будет создано на сервере S1, так как другого варианта просто нет.

Bacula поддерживает множество разных типов хранилищ, для решения поставленной задачи я выбрал тип File, представляющий собой просто файлы. Располагаться хранилище будет в директории /home/backup/bacula/.

В итоге получился такой конфиг:

Storage {
  # имя демона
  Name = S1-sd
  # порт демона
  SDPort = 9103
  # рабочая директория
  WorkingDirectory = "/var/lib/bacula"
  # где создавать pid
  Pid Directory = "/var/run"
  # максимальное количество одновременных заданий
  Maximum Concurrent Jobs = 20
}

# Director, который может работать со Storage Daemon
Director {
  # имя демона Director
  Name = S1-dir
  # пароль, под которым Director будет общаться со Storage Daemon
  Password = "somepass"
}

# Director, который может получать информацию о состоянии Storage Daemon
Director {
  # имя демона Director
  Name = S1-mon
  # пароль, под которым Director будет общаться со Storage Daemon
  Password = "somepass"
  Monitor = yes
}

# настройка хранилища
Device {
  # имя хранилища
  Name = S1FileStorage
  # тип хранилища
  Media Type = File
  # физическое расположение хранилища
  Archive Device = /home/backup/bacula/
  # разрешать Bacula задавать лейбл хранилищу
  # без этой опции хранилище придется создавать вручную из консоли
  LabelMedia = yes;
  # хранилище поддерживает работу со случайными блоками
  Random Access = yes;
  # автоматически подключать хранилище по запросу
  AutomaticMount = yes;
  # хранилище не является сменным носителем
  RemovableMedia = no;
  # не держать хранилище все время открытым
  AlwaysOpen = no;
}

# отправка сообщений
Messages {
  # тип сообщения
  Name = Standard
  # Director, через который будут отправлены сообщения
  director = S1-dir = all
}

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

css.php