https://sysahelper.gitbook.io/sysahelper/main/linux_admin/main/baculasetup
Bacula — это система резервного копирования корпоративного уровня. Она имеет клиент-серверную архитектуру и состоит из таких компонентов:
- Bacula Director (сервис bacula-dir) — основной сервис, который управляет всеми другими процессами по резервному копированию и восстановлению;
- Bacula Storage (сервис bacula-sd) — хранилище, предназначенное для сохранения резервных копий на диске;
- Bacula File Daemon (сервис bacula-fd) — клиентская часть сервиса, которая нужна для доступа к файлам на сервере, с которого будет выполнятся резервное копирование.
Базовая настройка Bacula на сервере:
Установим необходимые пакеты:
apt-get update && apt-get install -y bacula11-{common,console,director-common,director-mysql,storage} mt-st
Необходимо привести файл /lib/tmpfiles.d/bacula.conf к следующему виду:
vi /lib/tmpfiles.d/bacula.conf
d /var/run/bacula 0775 root bacula -
Настройка базы данных MySQL
Установка и запуск MySQL-server:
apt-get install -y MySQL-server
systemctl enable --now mysqld
В bacula присутствуют скрипты для создания базы, пользователя и таблиц. Для того чтобы задать пароль для пользователя bacula необходимо отредактировать следующую строку в файле /usr/share/bacula/scripts/grant_mysql_privileges:
sed -i "s/db_password=/db_password=\"bacula\"/g" /usr/share/bacula/scripts/grant_mysql_privileges
Выполним следующие скрипты:
/usr/share/bacula/scripts/create_mysql_database
/usr/share/bacula/scripts/make_mysql_tables
/usr/share/bacula/scripts/grant_mysql_privileges
За настройку Bacula Director отвечает файл /etc/bacula/bacula-dir.conf
Необходимо указать пароль для подключения к БД пользователя bacula:
vi /etc/bacula/bacula-dir.conf
Описание хранилищ:
В каталоге /etc/bacula/storage.d находятся конфигурационные файлы хранилищ к которым director имеет доступ:
vi /etc/bacula/storage.d/file.conf
Важно указать IP или FQN хранилища (если указать 127.0.0.1, то будет доступен только локальный backup)
В каталоге /etc/bacula/fileset.d находятся описания списков файлов для резервирования.
catalog.conf: — Описывает резервирование дампа базы данных bacula
fullset.conf — Полный бэкап системы (или как шаблон для конкретного необходимого каталога, в качестве примера будет выполняться backup каталога /etc — удалённого сервера)
vi /etc/bacula/fileset.d/fullset.conf
Описание задач
В каталоге /etc/bacula/job.d описываются задания резервирования
/etc/bacula/job.d/backupcatalog.conf — Делает дамп базы и резервирует его
/etc/bacula/job.d/bacula.conf — делает полный бэкап
/etc/bacula/job.d/defaultjob.conf — описывает параметры задачи по умочанию
/etc/bacula/job.d/restore.conf — восстанавливает файлы
Описание пулов
/etc/bacula/pool.d/default.conf — описывает пул по умолчанию
Описание клиентов
В файле /etc/bacula/client.d/client1.conf — опишем удалённого клиента (сервер с которого будет делаться backup каталога /etc)
vi /etc/bacula/client.d/client1.conf
Указав IP — адрес и пароль для клиента
Проверка конфигурационных файлов
Проверить корректность конфигурационных файлов bacula director можно так:
bacula-dir -t -c /etc/bacula/bacula-dir.conf
Запускаем и добавляем в автозагрузку bacula-dir:
systemctl enable --now bacula-dir
Настройка Storage
Основной файл конфигурации хранилищ находится это /etc/bacula/bacula-sd.conf, также к нему присоединяются все файлы из каталога /etc/bacula/device.d
cat /etc/bacula/device.d/filestorage.conf
Каталог /srv/backup должен существовать и принадлежать пользователю bacula:
chown bacula:bacula /srv/backup
Проверка конфигурационных файлов
Проверить корректность конфигурационных файлов bacula storage можно так:
bacula-sd -t -c /etc/bacula/bacula-sd.conf
Включаем и добавляем в автозапуск bacula-sd:
systemctl enable --now bacula-sd
Настройка клиента — File Daemon:
Установим необходимые пакеты:
apt-get update && apt-get install -y bacula11-client
Конфигурационный файл клиента находится по адресу /etc/bacula/bacula-fd.conf
vi /etc/bacula/bacula-fd.conf
Необходимо указать пароль клиента
Запускаем и добавляем в автозагрузку bacula-fd:
systemctl enable --now bacula-fd
Создадим тестовую директорию и несколько файлов:
mkdir /etc/test_backup_dir
touch /etc/test_backup_dir/test_file_{0..10}.txt
Проверка работоспособности
Переходим на bacula-server для создания backup каталога /etc — удалённого сервера (клиента)
Для управления bacula используется специальная утилита bconsole
Создание резервной копии
За ходом выполнения можно наблюдать выбрав статус director:
Важно помнить — хоть и написано Back Full — но мы указали в шаблоне только каталог /etc
Восстановление из резервной копии
Теперь на клиенте удаляем нашу ранее созданный каталог со всеми файлами:
rm -rf /etc/test_backup_dir/*
Переходим на bacula-server в утилиту bconsole:
Выбираем 1 пункт — показать последние 20 задач:
Выбираем 3 пункт — ввести номера задач через запятую и вводим номер задачи 2:
Bacula построит дерево файлов в котором мы можем выбрать файлы для восстановления. Выберем файлы в каталоге /etc
Проверяем на клиенте восстановленный каталог со всеми файлами
Файлы восстановлены в каталог /tmp/bacula-restores:
ls /tmp/bacula-restores/etc/test_dir_backup
mv /tmp/bacula-restores/etc/test_dir_backup /etc/