Нажмите "Enter" для перехода к содержанию

Установка и настройка Bacula

0

Резервное копирование – это одна из самых важных вещей если вы управляете серверами или у вас есть хотя бы один свой сервер. Непредвиденная ситуация может произойти в любой момент. Для того чтобы потерять данные не надо никакого особого случая. У вас может выйти из строя жесткий диск, у хостинг провайдера может что-то сломаться, или вы можете сами случайно снести базу данных забыв, что она где-то используется и в ней ещё есть важные данные.

В этой статье мы рассмотрим как выполняется установка и настройка Bacula. Это одна из самых популярных систем резервного копирования для Linux с открытым исходным кодом.

Что такое Bacula

Bacula – это система резервного копирования корпоративного уровня. Она имеет клиент-серверную архитектуру и состоит из таких компонентов:

  • Bacula Director (сервис bacula-dir) – основной сервис, который управляет всеми другими процессами по резервному копированию и восстановлению;
  • Bacula Storage (сервис bacula-sd) – хранилище, предназначенное для сохранения резервных копий на диске;
  • Bacula File Daemon (сервис bacula-fd) – клиентская часть сервиса, которая нужна для доступа к файлам на сервере, с которого будет выполнятся резервное копирование.

Все компоненты могут быть установлены как на одном сервере, так и на разных, но каждый из них должен иметь возможность обратится к другому по сети. Для управления всем этим используется утилита командной строки bconsole. Для неё существует как консольный так и веб-интерфейс, но основной способ управления – командная строка.

Установка и настройка Bacula

Шаг 1. Установка Bacula на сервер

Для версии сервера можно устанавливать полностью группу пакетов bacula. В Ubuntu по умолчанию будут установлены также такие пакеты, как PostgreSQL и Postfix. Команда установки будет выглядеть вот так:

sudo apt install bacula

Для работы Bacula нужна какая-нибудь база данных поэтому без Postgresql обойтись не получится, но Postfix можно не ставить, для этого просто допишите в команде установки postfix-. Например:

sudo apt install bacula postfix-

В процессе установки программа предложит настроить базу данных для Bacula. Лучше сделать это сейчас чтобы потом не делать вручную. Поэтому выберите Yes в следующем окне:

Поскольку база данных находится на том же сервере, что и Bacula достаточно выбрать localhost:

Далее введите пароль от будущей базы данных:

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

Шаг 2. Настройка Bacula Storage

Давайте первым делом настроем хранилище для Bacula. Конфигурация хранилища находится в файле /etc/bacula/bacula-sd.conf. В конфигурационном файле есть несколько секций:

  • Storage – секция, с основными настройками хранилища, здесь настраивается имя хранилища, а также IP адрес на котором оно будет доступно, для локальной сети пока достаточно 127.0.0.1.
  • Director – настраивается авторизация для управляющего сервиса, тут надо прописать имя сервиса, который может подключится и пароль, который он должен использовать.
  • Device – здесь настраивается способ хранения файлов на физическом диске и путь к папке, где они будут хранится.
  • Messages – отправка сообщений, можно оставить как есть.

Каждая секция имеет такой синтаксис:

имя_секции <
параметр=значение
>

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

sudo mv /etc/bacula/bacula-sd.conf

sudo vi /etc/bacula/bacula-sd.conf

Удалять оригинальный файл не стоит, потому что может в будущем изменятся какие-либо пути и вам надо будет сверится с этим файлом. Сначала секция Storage:

Дальше секция Director:

Секция Device:

Некоторые опции довольно странные. Это потому что изначально программа использовала не жесткие диски, а накопители на магнитной ленте для хранения данных. Последняя секция Messages. Всё остается как было в оригинальном файле:

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

sudo /usr/sbin/bacula-sd -t -c /etc/bacula/bacula-sd.conf

Если программа не вывела в консоль вообще ничего можно двигаться дальше. Перезапустите сервис чтобы применить изменения:

sudo systemctl restart bacula

Шаг 3. Настройка локального клиента Bacula File Daemon

Эта служба используется для доступа к файлам на сервере. Она должна быть запущена на машинах, с которых вы хотите делать резервные копии. Конфигурация стандартная, для локальной машины вы можете оставить то, что там есть по умолчанию. Рассмотрим основные секции:

sudo vi /etc/bacula/bacula-fd.conf

Дальше идет секция с основными настройками File Daemon:

Ну и стандартная секция для отправки сообщений в Director:

Если что-то меняли, не забудьте проверить конфигурацию на ошибки и перезапустить сервис bacula-fd.

Шаг 3. Настройка Bacula Director

Конфигурационный файл Bacula Director находится по такому пути /etc/bacula/bacula-director.conf. Здесь тоже всё разбито на секции. Вы можете поступить аналогично настройке Storage. Переименовать его и добавлять секции в пустой файл. Давайте рассмотрим основные секции. Главная секция, описывающая сам сервис управления называется Director:

Следующая секция не обязательная, но она есть в конфигурационном файле Bacula – JobDefs. Эта секция содержит значения по умолчанию, которые потом можно будет использовать при создании задач (Job):

Файл с метаданными в формате bsr содержит информацию в ASCII о том, где и какие файлы находятся. Она необходима для того чтобы потом можно было восстановить из резервной копии отдельные файлы без восстановления всего что было сохранено. Дальше идёт секция с именем Catalog, в которой описывается способ подключения к базе данных Postgresql, которая была создана и настроена во время установки. Если всё сделано правильно, то в оригинальном конфигурационном файле уже есть верные данные:

Ещё тут есть секция Messages с именем Standart и секция Console. В них ничего менять не надо, просто скопируйте их из оригинального конфигурационного файла.

Шаг 4. Резервное копирование локальной папки

Теперь у вас есть полностью настроенное хранилище, eizenhorn-sd и файловый демон eizenhorn-fd. Можно приступать к настройке резервного копирования локальной папки. Для этого в конфигурационный файл директора надо добавить несколько секций. Давайте сначала добавим пул, где будут хранится данные. Фактически, эта секция описывает набор томов (Volume), а фактически файлов в файловой системе с одинаковым префиксом, в которые будут записываться резервные копии. Это полезно, например, если вы хотите хранить резервные копии каждой машины в отдельном файле:

sudo vi /etc/bacula/bacula-dir.conf

Пул готов, дальше надо определиться какой клиент мы будем использовать для доступа к файлам. Поскольку это локальная машина, надо использовать ранее настроенный eizenhorn-fd:

Тут надо разобраться с группой параметров удаления данных. Раньше, в настройке пула использовался параметр Volume Retention, в настройке клиента ещё два. Вот их значения:

  • Job Retention – период хранения информации о выполненных задачах. Она занимает не много места, поэтому хранить её можно долго. После удаления вы не сможете посмотреть какие задачи когда были выполнены.
  • File Retention – период хранения информации о местонахождении файлов. Занимает уже больше места, но позволяет восстановить отдельные файлы из резервной копии. Без него вы сможете восстановить файлы только распаковав резервную копию полностью.
  • Volume Retention – отвечает за хранение самих данных резервных копий. После удаления вы уже не сможете получить к ним доступ.

После того как клиент есть осталось понять какие файлы надо поместить в резервную копию, для этого есть секция FileSet:

В данном случае интересен только параметр File, который указывает путь к папке, которую надо поместить в резервную копию. В данном случае это папка с конфигурацией системы – /etc.

Теперь надо указать когда запускать резервную копию с помощью секции Scedule:

Имя Name может быть произвольным, вы его будете использовать позже, при составлении задачи, а параметр Run должен указывать когда надо запускать резервную копию, а также может переопределять параметры заданные в задаче (Job). Кроме того можно задать несколько директив Run для того чтобы настроить разные типы резервного копирования.

Переопределяя уровень резервирования (Level) можно указать такие параметры:

  • Full – все файлы и каталоги перечисленные в FileSet не зависимо от того изменились они или нет.
  • Incremental – только те файлы и каталоги из FileSet, которые изменились с момента последней резервной копии.

Подробно о формате времени можно узнать в официальной документации. В упрощенном варианте можно использовать такой синтаксис:

день at ЧЧ : ММ

месяц номер_недели день at ЧЧ : ММ

В качестве дня можно использовать daily (каждый день) или sun, mon, the, wed, thu, fri, sat. В качестве номера недели: 1st, 2st, 3st, 4st, 5st. Например, можно записать вот так:

Дальше осталось объединить всё созданное ранее в задаче (Job):

После завершения настройки проверьте конфигурационный файл на ошибки:

sudo /usr/sbin/bacula-dir -t -c /etc/bacula/bacula-dir.conf

И если всё хорошо, перезапустите сервис:

sudo systemctl restart bacula-dir

Шаг 5. Настройка консоли

Конфигурационный файл консоли находится здесь /etc/bacula/bconsole.conf. В нём есть только одна секция и здесь нужно указать на каком IP адресе ожидает соединений Bacula Director, а также пароль, к нему настроенный в секции Director файла /etc/bacula/bacula-dir.conf. Например:

Дальше можно переходить к работе с консолью.

Шаг 5. Резервное копирование в консоли

Работать с консолью Bacula довольно непривычно. Но у неё есть свои плюсы. Для запуска консоли выполните такую команду:

Вы увидите такое окно, с приглашением ввода в виде звездочки:

Для запуска задачи по резервному копированию выполните команду run. Поскольку сейчас задача одна, вам сразу же будет предложено её выполнить, в дальнейшем надо будет выбрать номер задачи или явно указать её имя команде в параметре команды run. После выполнения задачи она будет просто поставлена в очередь:

Больше ничего выведено не будет. Но результат выполнения задачи никуда не теряется. Он приходит вам в виде сообщений. Вы можете закрыть консоль и снова войти или просто нажать Enter и увидите сообщение о том, что You have messages:

Для того чтобы прочитать сообщения используйте команду messages:

В данном случае будет выведена краткая статистика по задаче, а также результат её выполнения, ОК:

Посмотреть список выполненных задач можно командой list jobs:

Обратите внимание, что у каждой задачи есть свой ID и вы можете с помощью него посмотреть список файлов каждой задачи:

list files jobid=14

Шаг 6. Восстановление данных

Для восстановления данных можно создать специальную задачу (Job), а затем воспользоваться командой restore, которая позволяет восстановить нужную резервную копию. Сначала надо добавить нужную задачу в конфигурационный файл /etc/bacula/bacula-dir.conf. Например, для восстановления ранее сделанной резервной копии папки /etc:

Сохраните изменения и перезапустите bacula-dir, затем создайте папку, куда будет выполнятся восстановление:

sudo mkdir /opt/restore

Запустите консоль и выполните команду restore для того чтобы начать восстановление:

Дальше вам надо знать задачу по резервному копированию, которую вы хотите восстановить. Узнать её можно несколькими способами:

  • 1 – выведет последние 20 выполненных задач;
  • 2 – выведет задачи, у которых есть указанные файлы;
  • 3 – позволяет ввести вручную ID нужных задач;
  • 4 – позволяет выполнить SQL запрос.

Все варианты я рассматривать не буду. Для примера можно воспользоваться первым, и выбрать одну из ранее выполненных задач:

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

Здесь нужно перемещаться по виртуальной файловой системе с помощью команд cd и ls, а также отмечать или снимать отметку для файлов которые надо извлечь командами mark и unmark. Когда всё будет готово выполните команду done:

После этого утилита предложит выбрать клиент с помощью которого будет выполнятся восстановление:

А затем утилита покажет общую информацию о будущем восстановлении и вам надо набрать yes для того чтобы продолжать.

После завершения восстановления файлы появятся в папке /opt/restore. Если вы хотите восстановить все файлы из последней резервной копии, то вам не надо делать всё это достаточно выполнить команду run и передать ей имя задачи по восстановлению:

Выводы

Из этой статьи вы узнали как выполняется установка и настройка Bacula в Linux для резервного копирования локальных файлов. Удалённое резервное копирование не намного сложнее. Вам просто надо установить на удалённую машину клиент и прописать его IP адрес в директоре. Это довольно громоздкая платформа, но нельзя не отдать ей должное в том, что конфигурационные файлы вполне понятны и их не очень сложно редактировать. А если вы не хотите иметь дело с консолью и конфигурационными файлами, то у программы есть несколько сторонних веб-интерфейсов.

Нет похожих записей

alt=”Creative Commons License” width=”” />
Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *