Отображение дочерних | ||||||
---|---|---|---|---|---|---|
|
Оглавление |
---|
Введение
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 обеспечивает поддержку сохранения расширенных атрибутов каталогов и файлов и, при необходимости, их последующее восстановление.
Первоначальная настройка
Первоначально нам необходимо настроить PostgreSQL для того, чтобы Bacula могла работать с ней.
Перед изменением настроек рекомендуется сделать резервную копию данных:
Command |
---|
sudo cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf_bak sudo cp /etc/postgresql/9.6/main/pg_hba.conf /etc/postgresql/9.6/main/pg_hba.conf_bak |
В секции «Connection Settings» файла «/etc/postgresql/9.6/main/postgresql.conf» изменить значение listen_addresses=”localhost” на listen_addresses=”*”, поставив * вместо localhost:
Предупреждение |
---|
ОБЯЗАТЕЛЬНО СОХРАНИТЬ НАСТРОЙКИ ПОСЛЕ РЕДАКТИРОВАНИЯ. |
В файле «/etc/postgresql/9.6/main/pg_hba.conf» внести необходимые изменения:
Для простоты указать метод trust для всех соединений, удалить любую дополнительную конфигурацию после метода типа mod=; и обязательно добавить хост с IP-адресом, где будет работать Директор.
В секции «Database administrative login by Unix domain socket» файла «/etc/postgresql/9.6/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; |
Если база создалась получаем ответ:
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 sudo setfacl -R -m u:postgres:r /etc/parsec/macdb sudo setfacl -m u:postgres:rx /etc/parsec/macdb sudo setfacl -d -m u:postgres:r /etc/parsec/capdb sudo setfacl -R -m u:postgres:r /etc/parsec/capdb sudo setfacl -m u:postgres:rx /etc/parsec/macdb |
Установить пользователю необходимые атрибуты:
Информация |
---|
в данной команде используется буква 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. |
Если же что-то пошло не так, то Вам просто повезло, что вы делаете все на ВМ, откатываемся и повторяем настройки, на этот раз внимательнее.
Раскрыть | ||||
---|---|---|---|---|
| ||||
Создаем сценарий ImaLazyAssscript.sh со следующим содержимым:
|
Предупреждение |
---|
Предварительная настройка закончена, если все прошло без ошибок, то можно и НУЖНО(!!!) сделать снимок ВМ Директора. |