Bacula установка и настройка ubuntu 20

Обновлено: 05.07.2024

Для задач резервного копирования в системах Linux существует ряд продуктов (кроме специализированных стандартных утилит), которые обладают высокой эффективностью и универсальностью использования. Среди таковых особенно выделяется Bacula, которая кроме всех прочих достоинств обладает также и ещё некоторыми немаловажными особенностями — это свободное распространение и открытый исходный код. Как правило, подобные системы, в большинстве случаев – проприетарные, поэтому Bacula для системного администратора может явиться самым удачным и рациональным выбором.

Основные преимущества Bacula

Стоит отдельно остановиться на конкретных возможностях Bacula, выделяющих её среди аналогичных продуктов:

  • Открытый исходный код и свободное распространение.
  • Работа в смешанных системах – UNIX, Linux, Mac OS и Windows.
  • Модульная, легко масштабируемая архитектура с чётким разделением функционала, данных и элементов управления/взаимодействия с системой.
  • Организация и управление базами данных с помощью MySQL, PostgreSQL и даже
  • Работа с несколькими ленточными устройствами хранения, в том числе и с автоматической заменой лент.
  • Шифрование сетевого трафика, а также данных резервных копий.
  • Централизованные контроль и управление резервным копированием всей системы в распределённых системах любой сложности.
  • Возможность создания сигнатур MD5 или SHA1 для каждого обрабатываемого файла.
  • Возможность копирования файлов, размером больше 2 Гбайт.
  • Поддержка выполнения сценариев в процессе резервного копирования.

Справедливо отметить, что далеко не каждый коммерческий закрытый продукт обладает всеми перечисленными возможностями.

Принцип работы Bacula

Утилита состоит из функциональный компонентов, каждый из которых ответственен за свой круг задач. Каждый компонент функционирует в системе в виде отдельного демона. Они (демоны) обмениваются данными между собой автоматически, а также посредством графического пользовательского интерфейса (GUI) или через командную консоль управления.

Итак, основные демоны Bacula:

  • Управления — этот компонент управляет задачами резервного копирования и восстановления, а также координирует проверку файлов, подлежащих резервированию.
  • Управления файлами работает в каждой системе, в которой необходимо резервное копирование. Он отправляет демону управления данные об атрибутах резервируемых файлов.
  • Хранения — выполняет чтение/запись с устройств хранения. По-умолчанию он работает на тех машинах, к которым непосредственно подключены устройства хранения, однако можно запускать этот демон и на удалённом компьютере — отдельно.
  • Каталог — это компонент представляет собой служебную базу данных (БД) для организации и учёта резервного копирования, восстановления и проверки файлов. Благодаря каталогу, утилита располагает всей информацией о всех файлах и устройствах хранения в ретроспективе.

Настройка Bacula

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

  • установить демоны;
  • установить и настроить внешние СУБД (системы управления базами данных), а также создать саму БД и таблицы для использования;
  • установить и настроить клиентские демоны управления файлами;
  • запустить демоны Bacula;
  • определить носители хранения и добавить их в пул Bacula;
  • проверить работоспособность путём выполнения тестового резервного копирования.

Обычно, на клиентских компьютерах устанавливаются демоны управления файлами, а все остальные демоны работают на серверной машине. В больших и сложных системах с высокой нагрузкой рекомендуется отступать от этой схемы, равномерно организуя нагрузку на сервера, устанавливая отдельные компоненты (демоны) Bacula на отдельных машинах, в том смысле, что на отдельных машинах не должно выполняться сразу несколько демонов.

Установка базы данных

Как уже было сказано, Bacula имеет функциональный компонент — каталог для организации, хранения и использования в своих задачах ретроспективы данных. Этот каталог хранится в БД и обслуживается СУБД, которая, в свою очередь, предварительно должна быть установлена и настроена.

Сама же БД утилиты, т. е. её каталог также должна быть предварительно создана. Также и должны быть созданы и необходимые таблицы внутри этой БД. Обычно всё это делается автоматически при разворачивании утилиты в системе, когда она устанавливается из репозиториев дистрибутива. Для этого используются специализированные скрипты, которые можно найти в каталоге src/cats дистрибутива с исходными кодами Bacula, если сборка и установка производится вручную. Скрипт create_mysql_database создаст базу данных, а другой скрипт make_mysql_tables – таблицы для этой БД. Ещё один скрипт grant_mysql_privileges предоставляет пользователю MySQL разрешения для пользования этой БД.

Конфигурирование демонов

Для каждого компонента Bacula и демона предусмотрен отдельный конфигурационный файл. После установки и настройки СУБД, а также создания БД таблиц каталога Bacula необходимо выполнить конфигурацию и её компонентов. В следующей таблице представлены конфигурационные файлы основных компонентов утилиты, которые находятся в каталоге /etc/bacula:

Компонент

Конфигурационный файл

Компьютер

Сервер, запускающий демон управления

Любой сервер, содержащий демон хранения

Любой клиент, для которого нужно создавать резервные архивы

Любой компьютер, который можно использовать для управления

Стоит отметить, что хранение конфигурации в отдельных для каждого компонента файлах — очень удобно и способствует лучшей масштабируемости системы, ведь таким образом легко «расфасовать» разные демоны с их конфигурационными файлами по разным машинам. Например, если нужно хранить архивы на «стороннем компьютере», то для этого достаточно установить и настроить демон хранения на этом «стороннем компьютере».

Для того, чтобы более подробно рассмотреть механизм конфигурирования демонов, следует разобраться с несколькими базовыми понятиями, характерными для Bacula, а именно:

В более сложном случае, характерном для файла конфигурации bacula-dir.conf ресурс Messages имеет следующий вид:

Можно определить несколько ресурсов Messages и привязать их к отдельным заданиям, которые, в свою очередь, описываются в другом ресурсе Job. Самую подробную информацию о правилах описания ресурсов для разных случаях можно найти в официальной технической документации к Bacula.

Самой сложной конфигурацией является конфигурация демона управления — bacula-dir.conf. Она должна включать в себя описания ещё семи (кроме рассмотренных Director и Messages) ресурсов: Job, Client, Catalog, Storage, Schedule, FileSet, Pool. В предоставляемых в дистрибутивах или пакетах утилиты можно найти примеры конфигурационных файлов, в которых описываются ресурсы с подробными комментариями и на их основе создать собственную конфигурацию.

Для конфигурирования демона управления файлами на конкретном компьютере должен быть (после предварительной установки этого демона на этот компьютер) отредактирован файл bacula-fd.conf. В нём нужно, в ресурсе Director указать, какое устройство управления использовать для планирования задач для этого клиента, а также пароль — такой же, который указан в ресурсе Client в файле конфигурации демона управления. В ресурсе FileDemon определяются имена клиентов, а также порт, через который демон управления файлами слушает для получения команд от демона управления. Ну и конечно, должен быть определён ресурс Messages.

Запуск демонов Bacula

После того как все демоны и клиенты установлены и настроены. Можно запускать Bacula с помощью скрипта ./bacula start, который запустит все демоны системы. На клиентских машинах (на которых находятся демоны управления файлами). Для запуска клиентских демонов используется эта же команда. Сам же скрипт находится в каталоге с установленным сервером/демоном.

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

Для включения автозапуска Bacula при начальной загрузке системы можно (и нужно) также добавить команду ./bacula start в автозагрузку. В зависимости от используемой Linux-системы.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

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-dir -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):

Write Bootstrap = "/var/lib/bacula/%c.bsr" - куда запи­сы­вать файл с мета­дан­ны­ми .

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

dbname = "bacula" ; DB Address = "localhost" ; dbuser = "bacula" ; dbpassword = "пароль"

Ещё тут есть сек­ция 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 с открытым исходным кодом.

Что такое 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. В конфигурационном файле есть несколько секций:

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

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

Пробелы игнорируются интерпретатором, а регистр имен параметров не имеет значения. Секций с одним именем может быть несколько. Давайте теперь рассмотрим содержимое каждой секции, которая нам нужна подробнее. Старый конфигурационный файл можете переместить в _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:

Если что-то меняли, не забудьте проверить конфигурацию на ошибки и перезапустить сервис 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. После выполнения задачи она будет просто поставлена в очередь:



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

Посмотреть список выполненных задач можно командой 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 адрес в директоре. Это довольно громоздкая платформа, но нельзя не отдать ей должное в том, что конфигурационные файлы вполне понятны и их не очень сложно редактировать. А если вы не хотите иметь дело с консолью и конфигурационными файлами, то у программы есть несколько сторонних веб-интерфейсов.

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


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

Bacula - это программа резервного копирования, позволяющая вам сохранять, восстанавливать и проверять данные через вашу сеть. Для Bacula существуют клиенты под Linux, Windows и Mac OS X, превращая ее в кросс-платформенное сетевое решение.

Обзор

Bacula состоит из нескольких компонентов и сервисов для управления тем, какие файлы сохранять и где хранить резервные копии:

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

Установка

При использовании MySQL или PostgreSQL в качестве базы данных, вам уже должны быть доступны эти сервисы. Bacula не будет устанавливать их для вас.

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

При установке по умолчанию пакет bacula будет использовать базу данных MySQL для Catalog. Если вы хотите использовать SQLite или PostgreSQL, установите соответственно пакет bacula-director-sqlite3 или bacula-director-pgsql.

В процессе установки у вас спросят данные об администраторе базы данных и владельце базы данных bacula. Администратор базы данных требуется для получения необходимых прав на создание базы данных. Дополнительную информацию смотрите в разделе MySQL.

Настройка

Файлы настройки Bacula форматированы на основе ресурсов, включающих директивы, обрамленные фигурными скобками "<>". Каждый компонент Bacula имеет индивидуальный файл в каталоге /etc/bacula.

Различные компоненты Bacula должны авторизовывать себя друг для друга. Это решается использованием директивы password. Например, пароль в ресурсе Storage файла /etc/bacula/bacula-dir.conf должен соответствовать паролю ресурса Director файла /etc/bacula/bacula-sd.conf.

По умолчанию настраивается задание резервного копирования Client1 для архивирования Bacula Catalog. Если вы планируете использовать сервер для резервного копирования более чем на одном клиенте, вам потребуется изменить имя этого задания на что-то более осмысленное. Для переименования отредактируйте файл /etc/bacula/bacula-dir.conf:

В примере имя задания изменено на BackupServer в соответствии с сетевым именем машины. Можете заменить "BackupServer" на соответствующее сетевое имя вашего сервера или другое описательное название.

Требуется использовать Console для запросов к Director по поводу заданий, но чтобы обычный пользователь мог использовать Console, он должен быть включен в группу bacula. Чтобы добавить пользователя в группу bacula введите следующую команду в терминале:

Замените $username на актуальное имя пользователя. Также, если вы добавили в группу текущего пользователя, вам придется выйти из системы и зайти снова, чтобы применились новые права доступа.

Резервное копирование локальной системы

Эта секция описывает как сделать резервную копию определенных каталогов на единственном сервере на локальное ленточное устройство.

1. Для начала требуется настроить устройство хранения. Отредактируйте /etc/bacula/bacula-sd.conf, добавив:

Этот пример для ленточного устройства DDS-4. Измените "Media Type" и "Archive Device" в соответствии с вашим оборудованием.

Вы также можете раскомментировать один из примеров в этом файле.

2. После редактирования файла /etc/bacula/bacula-sd.conf сервис Storage требуется перезагрузить:

3. Теперь добавьте ресурс Storage в файл /etc/bacula/bacula-dir.conf для использования нового устройства:

Директива Address должна быть полностью квалифицированным доменным именем (FQDN) сервера. Замените backupserver на актуальное сетевое имя.

Также убедитесь, что директива Password соответствует строке пароля в /etc/bacula/bacula-sd.conf.

4. Создайте новый FileSet, который будет определять какие каталоги копировать, добавив:

Этот FileSet задает резервное копирование для каталогов /etc и /home. Директивы ресурса Options настраивают FileSet на создание контрольных сумм MD5 для каждого сохраненного файла и сжатие файлов с использованием GZIP.

5. Далее создайте новое расписание Schedule для задачи резервного копирования:

Задание будет запускаться каждый день в 00:01. Существует множество других доступных опций расписаний.

6. Наконец, создадим задание:

Задание будет выполнять полную резервную копию каждый день на ленту.

7. Каждая используемая лента должна иметь метку. Если текущая лента метки не имеет, Bacula отправит email с оповещением. Чтобы установить метку на ленту с помощью Console, введите в терминале:

8. В командной строке Bacula Console введите:

9. Вам предложат выбрать один из ресурсов Storage:

10. Введите новое имя тома:

Замените Sunday на соответствующую метку.

11. Теперь выберите накопитель:

Поздравляем! Вы настроили Bacula на резервное копирование локального сервера на подключенное ленточное устройство.

Ссылки

Читайте также: