Оглавление |
---|
Отображение дочерних | ||||||
---|---|---|---|---|---|---|
|
Введение
Bacula – пакет программ архитектуры «клиент-сервер» с открытым исходным кодом, предназначенный для создания резервных копий данных, находящихся на компьютерах с различными операционными системами, для восстановления и проверки хранящихся данных и имеющий модульную архитектуру, легко масштабируемый и может быть использован, как для небольшой локальной сети из нескольких компьютеров, так и для сети предприятия, состоящего из нескольких сотен компьютеров. Для передачи данных используется стек протоколов TCP/IP. Резервные копии создаются в собственном, полностью открытом формате.
Система состоит из пяти основных элементов:
1) Director Daemon (DD) – это центральный элемент системы, осуществляющий управление её остальными компонентами. В его задачи входит управление процессом резервирования/восстановления данных, обеспечение интерфейса управления для администраторов и многое другое. Говоря проще – это диспетчер, который инициирует все процессы и отслеживает ход их выполнения.
2) Storage Daemon (SD) – приложение, отвечающее за чтение/запись данных непосредственно на устройства хранения информации. Принимает управляющие команды от DD, а также резервируемые данные от/к File Daemon.
3) File Daemon (FD) – этот элемент ещё можно назвать Агентом. Ведь именно он работает в рамках операционной системы, данные которой необходимо резервировать. File Daemon выполняет всю рутину, осуществляя обращение к резервируемым файлам и их дальнейшую передачу к SD. Также на стороне FD выполняется защитное преобразование резервных копий, если это определено конфигурацией.
4) Bacula Console (BC) – интерфейс администратора системы. По своей сути, это командный интерпретатор для управления Bacula. Строго говоря, Bacula Console может быть расширена с помощью графических систем управления, которые, как правило, являются всего лишь надстройкой над BC. К таким системам можно отнести Tray Monitor и Bat. Первая устанавливается на компьютере администратора системы и осуществляет наблюдение за работой системы резервирования, а вторая обеспечивает возможность управления посредством графического интерфейса.
5) Bacula Catalog – база данных, в которой хранятся сведения обо всех зарезервированных файлах и их местонахождении в резервных копиях. Каталог необходим для обеспечения эффективной адресации к требуемым файлам. Поддерживаются MySql, PostgreSql и SqLite.
Такое структурное деление позволяет организовать очень гибкую систему резервирования, когда Storage Daemon разворачивается на выделенном сервере с несколькими устройствами хранения данных. Также Bacula Director может управлять несколькими экземплярами SD, обеспечивая резервирование части данных на одно устройство хранения, а части – на другое.
Bacula обеспечивает поддержку сохранения расширенных атрибутов каталогов и файлов и, при необходимости, их последующее восстановление.
Установка пакетов
Для работы директора Bacula требуются следующие пакеты:
- bacula-common-pgsql;
- bacula-director-pgsql;
- bacula-director;
- bacula-console;
- bacula-console-qt
Установить их можно командой:
Command |
---|
sudo apt install bacula-common-pgsql bacula-director-pgsql bacula-director bacula-console bacula-console-qt |
При установке пакетов автоматически будет установлена актуальная версия СУБД PostgreSQL. При установке СУБД будет предложено сразу выполнить настройку СУБД, от чего следует отказаться, настройка будет выполнена позднее. Далее подразумевается, что используется СУБД PostgreSQL версии 11, в старых обновлениях Astra Linux может использоваться PostgreSQL версии 9.6. Проверить используемую версию СУБД можно командой:
Command |
---|
apt policy postgresql |
Первоначальная настройка
Первоначально необходимо настроить СУБД PostgreSQL для того, чтобы Bacula могла работать с ней. Перед изменением настроек рекомендуется сделать резервную копию данных:
Command |
---|
sudo cp /etc/postgresql/11/main/postgresql.conf /etc/postgresql/11/main/postgresql.conf_bak sudo cp /etc/postgresql/11/main/pg_hba.conf /etc/postgresql/11/main/pg_hba.conf_bak |
В секции «Connection Settings» файла «/etc/postgresql/11/main/postgresql.conf» изменить значение listen_addresses=”localhost” на listen_addresses=”*”, поставив * вместо localhost:
Предупреждение |
---|
ОБЯЗАТЕЛЬНО СОХРАНИТЬ НАСТРОЙКИ ПОСЛЕ РЕДАКТИРОВАНИЯ. |
В файле «/etc/postgresql/11/main/pg_hba.conf» внести необходимые изменения:
- Для простоты указать метод trust для всех соединений;
- Удалить любую дополнительную конфигурацию после метода типа mod=;
- Обязательно добавить хост с IP-адресом, где будет работать Директор.
В секции «Database administrative login by Unix domain socket» файла «/etc/postgresql/11/main/pg_hba.conf» закомментировать строку:
Command |
---|
local all postgres peer |
и дописать после нее строку разделяя значения символом табуляции:
Command |
---|
local all postgres trust |
В секции «local» файла «pg_hba.conf» закомментировать строку:
Command |
---|
local all all peer |
и дописать после нее строку разделяя значения символом табуляции:
Command |
---|
local all all trust |
В секции «IPv4» файла «pg_hba.conf» закомментировать строку:
Command |
---|
host all all 0.0.0.0/0 md5 |
и дописать после нее 2 строки разделяя значения символом табуляции:
Command |
---|
host all all 127.0.0.1/32 trust |
Информация |
---|
при копировании проверяйте правильность указанных IP адресов |
Command |
---|
host all all 192.168.244.70/24 trust |
Предупреждение |
---|
ОБЯЗАТЕЛЬНО СОХРАНЯЙТЕ НАСТРОЙКИ ПОСЛЕ РЕДАКТИРОВАНИЯ. |
Перезапустить СУБД командой:
Command |
---|
sudo pg_ctlcluster 9.6 main restart |
Присвоить пароль пользователю postrges:
Command |
---|
sudo passwd postgres |
Присвоить пароль пользователю bacula:
Command |
---|
sudo passwd bacula |
В данном примере далее для обоих пользователей используется пароль "1".
Создать пользователя БД bacula с паролем «bacula» для работы с Bacula и сделать это надо не от имени учетной записи администратора.
Вводим команду:
Command |
---|
sudo -s |
или
Command |
---|
sudo -i |
Войти в интерфейс управления psql командой:
Информация |
---|
при копировании проверяйте правильность указанных IP адресов |
Войти в интерфейс управления psql командой:
Command |
---|
psql template1 -U postgres -h 192.168.244.70 -p 5432 |
подставив свой IP адрес, порт (у меня) по умолчанию.
Создаем пользователя bacula командой:
Command |
---|
template1=# CREATE ROLE bacula; |
Если пользователь bacula создался корректно/правильно получаем ответ:
Command |
---|
CREATE ROLE |
Присваиваем созданному пользователю пароль: "bacula" следующей командой:
Command |
---|
template1=# ALTER USER bacula WITH PASSWORD 'bacula'; |
Если пароль успешно присвоен пользователю получаем ответ:
Command |
---|
ALTER ROLE |
Создаем суперпользователя для нашей базы:
Command |
---|
template1=# ALTER USER bacula LOGIN SUPERUSER CREATEDB CREATEROLE; |
Если суперпользователь для нашей базы создался получаем ответ:
Command |
---|
ALTER ROLE |
Выходим из интерфейса управления psql командой:
Command |
---|
template1=# \q |
Далее нам необходимо создать БД bacula, назначить ее владельцем созданного ранее пользователя bacula.
Заходим в интерфейс управления psql командой:
Command |
---|
psql postgres -p 5432 -U postgres |
Создаем БД командой:
Command |
---|
postgres=# CREATE DATABASE bacula WITH ENCODING = 'SQL_ASCII' LC_COLLATE = 'C' LC_CTYPE = 'C' TEMPLATE = 'template0'; |
Предупреждение |
---|
При создании конфиграций Bacula не рекомендуется использовать кириллицу, так как использование кириллицы может вызвать ошибки. |
Если база создалась получаем ответ:
Command |
---|
CREATE DATABASE |
Назначаем владельцем данной БД пользователя "bacula" командой:
Command |
---|
postgres=# ALTER DATABASE bacula OWNER TO bacula; |
Если назначение прошло успешно получаем ответ:
Command |
---|
ALTER DATABASE |
Выходим из интерфейса управления psql командой:
Command |
---|
postgres=# \q |
Выходим из терминала суперпользователя
Далее нам необходимо запустить скрипты, которые создадут все необходимые таблицы и привилегии, предварительно забекапив и отредактировав их
Бекапим 1й нужный нам скрипт (создания таблиц) командой:
Command |
---|
sudo cp /usr/share/bacula-director/make_postgresql_tables /usr/share/bacula-director/make_postgresql_tables_bak |
и открываем его на редактирование:
Command |
---|
sudo mcedit /usr/share/bacula-director/make_postgresql_tables |
В строке "db_name" (14я сверху) указать значение имени БД «bacula»:
Command |
---|
db_name=bacula |
В строке psql после psql вписать «-U bacula -h 192.168.244.70 -p 5432»:
Command |
---|
psql -f - -d ${db_name} $* <<END-OF-DATA |
Информация |
---|
при копировании проверяйте правильность указанных IP адресов |
Command |
---|
psql -U bacula -h 192.168.244.70 -p 5432 -f - -d ${db_name} $* <<END-OF-DATA |
Предупреждение |
---|
ОБЯЗАТЕЛЬНО СОХРАНЯЙТЕ НАСТРОЙКИ ПОСЛЕ РЕДАКТИРОВАНИЯ. |
Создать резервную копию сценария раздающего привилегии командой:
Command |
---|
sudo cp /usr/share/bacula-director/grant_postgresql_privileges /usr/share/bacula-director/grant_postgresql_privileges_bak |
и открываем его на редактирование:
Command |
---|
sudo mcedit /usr/share/bacula-director/grant_postgresql_privileges |
В строке db_user (8я сверху) указать значение пользователя «bacula»
Command |
---|
db_user=bacula |
В строке db_name указать значение имени БД «bacula»
Command |
---|
db_name=bacula |
В строке db_password указать значение пароля пользователя БД «bacula»
Command |
---|
db_password=bacula |
В строке $bindir/psql**** после psql вписать «-U bacula -h 192.168.244.70 -p 5432»
Command |
---|
$bindir/psql -f - -d ${db_name} $* <<END-OF-DATA |
Информация |
---|
при копировании проверяйте правильность указанных IP адресов |
Command |
---|
$bindir/psql -U bacula -h 192.168.244.70 -p 5432 -f - -d ${db_name} $* <<END-OF-DATA |
Предупреждение |
---|
ОБЯЗАТЕЛЬНО СОХРАНЯЙТЕ НАСТРОЙКИ ПОСЛЕ РЕДАКТИРОВАНИЯ. |
Для корректного функционирования отредактированных сценариев необходимо выдать права на чтение информации из БД пользователей и сведений о метках безопасности, а так же присвоить для этого необходимые атрибуты пользователю postgres:
Command |
---|
sudo usermod -a -G shadow postgres sudo setfacl -d -m u:postgres:r /etc/parsec/macdb /etc/parsec/capdb |
Установить пользователю необходимые атрибуты:
Информация |
---|
в данной команде используется буква L в низком регистре |
Command |
---|
sudo pdpl-user bacula -l 0:0 |
Далее по очереди выполнить отредактированные сценарии:
Command |
---|
sudo /usr/share/bacula-director/make_postgresql_tables |
Command |
---|
sudo /usr/share/bacula-director/grant_postgresql_privileges |
Если сценарии отработали нормально, то есть:
- созданы все необходимые таблицы;
- корректно назначены все необходимые привилегии;
- без ошибок взята информация из БД пользователей и сведений о метках безопасности.
то будет выдано сообщение:
Command |
---|
Privileges for user bacula granted on database bacula. |
Если же что-то пошло не так, то Вам просто повезло, что вы делаете все на ВМ, откатываемся и повторяем настройки, на этот раз внимательнее.
Раскрыть | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
Создаем сценарий script.sh со следующим содержимым:
|
Предупреждение |
---|
Предварительная настройка закончена, если все прошло без ошибок, то можно и НУЖНО(!!!) сделать снимок ВМ Директора. |