Файл конфигурации Bacula Storage
Файл конфигурации Bacula Storage по умолчанию /etc/bacula/bacula-sd.conf имеет в себе почти 300 строк, в которых много служебной информации и примеры.
Нам все это не нужно.
Создадим папку куда сложим бекапы файлов конфигурации Bacula по умолчанию:
sudo mkdir /etc/bacula/backup-default-conf
Сделаем резервную копию основного файла конфигурации:
sudo mv /etc/bacula/bacula-sd.conf /etc/bacula/backup-default-conf/bacula-sd.conf
Создадим новый основной файл конфигурации (пустой): sudo touch /etc/bacula/bacula-sd.conf
Основная конфигурация Хранилища (Main conf)
Основные параметры Хранилища:
Storage {
# имя Хранилища
Name = stor-sd
# какой порт слушать (используется значение по умолчанию)
SDPort = 9103
# папка в которой лежат статус-файлы Хранилища
WorkingDirectory = "/var/lib/bacula"
# pid-файл демона Хранилища
Pid Directory = "/run/bacula"
# Максимальное количество выполняемых заданий.
# (не рекомендуется одновременно запускать более одного задания)
Maximum Concurrent Jobs = 1
# fqdn имя или IP-адрес Хранилища
SDAddress = 192.168.244.80
}
Подключение Директора к этому Хранилищу
Далее нам необходимо сконфигурировать подключение Директора к этому Хранилищу, добавив в этот файл ( /etc/bacula/bacula-sd.conf ) следующее:
Параметры подключения Директора к этому Хранилищу:
Картинка, СМОТРЕТЬ ОБЯЗАТЕЛЬНО для понимания как и где работают логины и пароли
Director {
# Имя Директора который может подключаться к этому Хранилищу
Name = dir-dir
# Пароль подключения к этому Хранилищу
Password = "storpass"
}
В моем примере я решил использовать Autochanger. Это Настройка которая позволяет сгруппировать устройства хранения, входящие в одну автоматизированную библиотеку, возможно виртуальную, и обращаться к ним как к единому целому, позволяя серверу хранения выбрать доступное.
Группировка устройств хранения
Далее нам необходимо настроить Autochanger .
Параметры группировки устройств хранения:
Autochanger {
# Имя, указывается В Директоре (директива Device ресурса Storage)
Name = Autochanger1
# имена устройств хранения через запятую (ресурсы Device)
Device = FileChgr1-Dev1, FileChgr1-Dev2
# /dev/null для виртуального дискового, имеются подстановки
# (%o - команда (load, unload), %a - устройство для данных, %c - устройство позиционирования и т.д.)
Changer Command = ""
# /dev/null для виртуального дискового
Changer Device = /dev/null
}
Устройства хранения
Далее мы сконфигурируем наши устройства хранения.
В моем случае это папки на одном и том же жестком диске. В любом другом случае это могут быть внешние устройства хранения смонтированные в указанные Вами папки.
У нас появляются 2 новых устройства с именами: "FileChgr1-Dev1" и "FileChgr1-Dev2".
Необходимо создать для них папки и присвоить им нужные права и владельца:
Папка для устройства FileChgr1-Dev1:
sudo mkdir /backups/files1/
sudo chmod 755 /backups/files1/
sudo chown root:bacula /backups/files1/
Папка для устройства
FileChgr1-Dev2:
sudo mkdir /backups/files2/
sudo chmod 755 /backups/files2/
sudo chown root:bacula /backups/files2/
Параметры устройств хранения:
Device {
# Имя устройства хранения (уникальное для каждого устройства)
Name = FileChgr1-Dev1
# логический тип носителя; указывается директором в запросе
# используется при восстановлении для определения сервера хранения, способного прочитать том;
# каждое устройство для записи на диск в определённый каталог должно иметь соответствующий Media Type,
# т.к. в БД хранится только Media Type, а не имя устройства
Media Type = File1
# имя устройства или абсолютное имя (путь) каталога
# в котором будут размещаться резервные копии
Archive Device = /backups/files1
# позволяет автоматически размечать новые тома
# в соответствии с директивой LabelFormat ресурса Pool в настройках Директора
LabelMedia = yes
# Указывает на возможность случайной (непоследовательной) адресации.
# Для устройства типа File должно быть yes
Random Access = Yes
# если устройство открыто, использовать его
AutomaticMount = yes
# возможно ли извлечение устройства хранения. Необходимо для Tape, CD и т.д.
# Для файлов устанавливается no
RemovableMedia = no;
# открывать только тогда, когда стартует соответствующие задание
AlwaysOpen = no;
# Максимальное количество выполняемых заданий.
# (не рекомендуется одновременно запускать более одного задания)
Maximum Concurrent Jobs = 1
}
Device {
Name = FileChgr1-Dev2
Media Type = File1
Archive Device = /backups/files2
LabelMedia = yes
Random Access = Yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
Maximum Concurrent Jobs = 1
}
Поведение уведомлений Хранилища
Заканчивается настройка Хранилища конфигурацией поведения уведомлений.
Поведение уведомлений Хранилища:
Messages {
Name = Standard
director = dir-dir = all
}
Итоговая конфигурация Хранилища
ВАЖНО (!!!) Итоговый вид конфигурации Хранилища:
Картинка, СМОТРЕТЬ ОБЯЗАТЕЛЬНО для понимания как и где работают логины и пароли
Storage {
# имя Хранилища
Name = stor-sd
# какой порт слушать (используется значение по умолчанию)
SDPort = 9103
# папка в которой лежат статус-файлы Хранилища
WorkingDirectory = "/var/lib/bacula"
# pid-файл демона Хранилища
Pid Directory = "/run/bacula"
# Максимальное количество выполняемых заданий.
# (не рекомендуется одновременно запускать более одного задания)
Maximum Concurrent Jobs = 1
# fqdn имя или IP-адрес Хранилища
SDAddress = 192.168.244.80
}
Director {
# Имя Директора который может подключаться к данному хранилищу
Name = dir-dir
# Пароль подключения к данному хранилищу
Password = "storpass"
}
Autochanger {
# Имя, указывается В Директоре (директива Device ресурса Storage)
Name = Autochanger1
# имена устройств хранения через запятую (ресурсы Device)
Device = FileChgr1-Dev1, FileChgr1-Dev2
# /dev/null для виртуального дискового, имеются подстановки
# (%o - команда (load, unload), %a - устройство для данных, %c - устройство позиционирования и т.д.)
Changer Command = ""
# /dev/null для виртуального дискового
Changer Device = /dev/null
}
Device {
# Имя устройства хранения (уникальное для каждого устройства)
Name = FileChgr1-Dev1
# логический тип носителя; указывается директором в запросе
# используется при восстановлении для определения сервера хранения, способного прочитать том;
# каждое устройство для записи на диск в определённый каталог должно иметь соответствующий Media Type,
# т.к. в БД хранится только Media Type, а не имя устройства
Media Type = File1
# имя устройства или абсолютное имя (путь) каталога
# в котором будут размещаться резервные копии
Archive Device = /backups/files1
# позволяет автоматически размечать новые тома
# в соответствии с директивой LabelFormat ресурса Pool в настройках Директора
LabelMedia = yes
# Указывает на возможность случайной (непоследовательной) адресации.
# Для устройства типа File должно быть yes
Random Access = Yes
# если устройство открыто, использовать его
AutomaticMount = yes
# возможно ли извлечение устройства хранения. Необходимо для Tape, CD и т.д.
# Для файлов устанавливается no
RemovableMedia = no;
# открывать только тогда, когда стартует соответствующие задание
AlwaysOpen = no;
# Максимальное количество выполняемых заданий.
# (не рекомендуется одновременно запускать более одного задания)
Maximum Concurrent Jobs = 1
}
Device {
Name = FileChgr1-Dev2
Media Type = File1
Archive Device = /backups/files2
LabelMedia = yes
Random Access = Yes
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
Maximum Concurrent Jobs = 1
}
Messages {
Name = Standard
director = dir-dir = all
}
Присвоение необходимых прав созданному файлу и назначение ему владельца (chmod and chown on file)
Далее нам необходимо присвоить необходимые права созданным файлам и папкам и назначить им владельца командами:
Присвоение необходимых прав созданному файлу и назначение ему владельца:
sudo chmod 644 /etc/bacula/bacula-sd.conf
sudo chown root:bacula /etc/bacula/bacula-sd.conf
Перезапуск сервиса Хранилища
Необходимо перезапустить сервис командой:
sudo systemctl restart bacula-sd.service
Если все настроено правильно, то никаких сообщений об ошибках мы не увидим.
Если что то пошло не так - смотрим логи Bacula и системы, разбираемся с правами доступа в папки и к файлам самой Bacula на Хранилище.
Так же для понимания что не так хорошо помогает результат вывода команды:
sudo journalctl -xe