Содержание

Skip to end of metadata
Go to start of metadata

Директору сообщаем:

  1. Имя Директора

  2. Местонахождение его базы данных и параметры подключения к ней

  3. Другую основную служебную информацию

  4. Как должны с ним общаться другие компоненты

  5. Как он должен общаться с другими компонентами

  6. Какие задания он должен выполнять

  7. Где он должен выполнять эти задания

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

  9. По каким расписаниям и с каким приоритетом выполнять задания

  10. С какими томами и пулами (группами томов) работать при выполнении заданий

  11. Как и куда сообщать о своем состоянии и работах

Основной файл конфигурации Bacula Director

Приступаем к основной настройке.

Файл конфигурации Bacula по умолчанию /etc/bacula/bacula-dir.conf имеет в себе более 300 строк, в которых много служебной информации и примеры. Нам все это не нужно.

Создадим папку куда сложим бекапы файлов конфигурации Bacula по умолчанию:

sudo mkdir /etc/bacula/backup-default-conf

Сделаем резервную копию основного файлов конфигурации:

sudo mv /etc/bacula/bacula-dir.conf /etc/bacula/backup-default-conf/bacula-dir.conf

Создадим новый основной файл конфигурации (пустой):

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

Основная конфигурация Директора (Main conf)

при копировании проверяйте правильность указанных IP адресов

Director {

# имя Директора

Name = dir-dir

# какой порт слушать (используется значение по умолчанию)

DIRport = 9101

# путь к сценарию, содержащему sql запросы для работы с Bacula Catalog

QueryFile = "/etc/bacula/scripts/query.sql"

# папка в которой лежат статус-файлы Директора

WorkingDirectory = "/var/lib/bacula"

# pid-файл демона Директора

PidDirectory = "/run/bacula"

# Максимальное количество выполняемых заданий.

# (не рекомендуется одновременно запускать более одного задания)

Maximum Concurrent Jobs = 1

# Пароль Директора

Password = "dirpass"

# Конфигурация параметров уведомлений (описано в секции Messages)

Messages = Daemon

# fqdn имя или IP-адрес Директора

DirAddress = 192.168.244.70

}

Подключение к базе данных (Bacula Catalog)

Далее нам необходимо сконфигурировать подключение к БД, добавив в этот файл ( /etc/bacula/bacula-dir.conf ) следующее:

при копировании проверяйте правильность указанных IP адресов

Catalog {

# наименование Bacula Catalog

Name = BaculaCatalog

# адрес сервера БД PostgreSQL

DB Address = 192.168.244.70

# порт подключения на сервере

DB PORT = 5432

# имя базы данных на сервере PostgreSQL

dbname = bacula

# имя пользователя базы данных на сервере PostgreSQL

dbuser = bacula

# пароль пользователя базы данных на сервере PostgreSQL

dbpassword = bacula

}

Шаблонное задание (DefaultJob)

Шаблонное задание - это задание по умолчанию, параметры которого могут быть использованы другими заданиями.

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

Логика работы такова: Bacula читает настройки из задания для клиента и если в нем есть отсылка на Шаблонное задание то параметры, если они не указаны в созданном задании берутся из Шаблона.

Далее нам необходимо сконфигурировать шаблонное задание, добавив в этот файл ( /etc/bacula/bacula-dir.conf ) следующее:

JobDefs {

# Имя задания

Name = "DefaultJob"

# Тип задания (backup, restore и т.д.)

Type = Backup

# Уровень бэкапа (Full, Incremental, Differential и т.п)

Level = Incremental

# Имя клиента на котором выполняется задание

Client = dir-fd

# Набор файлов для выполнения задания

FileSet = "Full Set"

# Расписание выполнения задания

Schedule = "WeeklyCycle"

# Файловое хранилище

Storage = stor-sd

# Поведение уведомлений

Messages = Standard

# Пул, куда будем писать бэкапы. Если мы хотим сделать отдельный пул для каждого клиента,

# или использовать префиксы, тогда пул указывается в задании для каждого клиента

# переопределяя тем самым эту настройку

Pool = File

# Буферизация атрибутов файлов

SpoolAttributes = yes

# Приоритет. Давая заданиям приоритеты от 1 (max) до 10 (min), можно регулировать последовательность их выполнения.

Priority = 10

# Файл хранит информацию откуда извлекать данные при восстановлении

Write Bootstrap = "/var/lib/bacula/%c.bsr"

}

Подключение к Хранилищу (Storage)

Так как хранилище бекапов у нас одно, то параметры работы с ним мы так же укажем в основном конфигурационном файле:

при копировании проверяйте правильность указанных IP адресов

Storage {

# имя Хранилища

Name = stor-sd

# fqdn имя или IP-адрес хранилища.

# Даже если хранилище на этой же машине "localhost" использовать не рекомендуется

Address = 192.168.244.80

# порт оставляем стандартный

SDPort = 9103

# пароль Хранилища

Password = "storpass"

# имя устройства хранения, описаное в файле bacula-sd.conf

Device = Autochanger1

# Должно соответствовать директиве Media Type ресурса Device настройки

Media Type = File1

# Максимальное количество выполняемых заданий.

# (не рекомендуется одновременно запускать более одного задания)

Maximum Concurrent Jobs = 1
}

Настройка групп томов Хранилища (Pool's)

Группа томов нашего хранилища одна, параметры работы с ней так же укажем в основном конфигурационном файле:

Pool {

# имя пула, указывается в заданиях резервного копирования

Name = File

# тип пула

Pool Type = Backup

# Bacula может автоматически очищать или перезаписывать тома пула

Recycle = yes

# период в течении которого информация о заданиях и файлах хранится в БД, по истечению периода эта информация удаляется

Volume Retention = 365 days

# удалять из БД записи о заданиях и файлах , срок хранения которых истёк в соответствии с Volume Retention

AutoPrune = yes

# максимальный объем тома в пуле

Maximum Volume Bytes = 50G

# максимальное количество томов в пуле

Maximum Volumes = 100

# с каких символов начинаются имена томов пула

Label Format = "Vol-"

}

Поведение уведомлений (Messages)

Далее мы опишем уведомления и так как их всего два типа, то они так же буду включены в основной файл конфигурации.

# Данная секция описывает стандартное поведение уведомлений

Messages {

# имя

Name = Standard

# команда отправки письма

mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"

команда для передачи сообщений оператору

operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"

# куда = кому = и какие уведомления отправлять

mail = root = all, !skipped

требование к оператору смонтировать том по необходимости

operator = root = mount

# какие сообщения выводить в консоль

console = all, !skipped, !saved

# путь к логу = какие сообщения записывать в лог

append = "/var/log/bacula/bacula.log" = all, !skipped

# записывать в СУБД в таблицу Log; очищается одновременно с удалением записи о задании

catalog = all

}


Данная секция описывает поведение уведомлений непосредственно Для самого демона Bacula

Messages {

имя

Name = Daemon

команда отправки письма

mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"

куда = кому = и какие уведомления отправлять

mail = root = all, !skipped

какие сообщения выводить в консоль

console = all, !skipped, !saved

путь к логу = какие сообщения записывать в лог

append = "/var/log/bacula/bacula.log" = all, !skipped

}

Фрагментация конфигурации (Other conf)

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

# Дальнейшие строчки подгружают все конфигурационные файлы из папок

# «job.d» «client.d» «fileset.d» «schedule.d»

@|"sh -c 'for f in /etc/bacula/job.d/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/client.d/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/fileset.d/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/schedule.d/*.conf ; do echo @${f} ; done'"

Итоговая конфигурация Директора

при копировании проверяйте правильность указанных IP адресов

Director {

# имя Директора

Name = dir-dir

# какой порт слушать (используется значение по умолчанию)

DIRport = 9101

# путь к сценарию, содержащему sql запросы для работы с Bacula Catalog

QueryFile = "/etc/bacula/scripts/query.sql"

# папка в которой лежат статус-файлы Директора

WorkingDirectory = "/var/lib/bacula"

# pid-файл демона Директора

PidDirectory = "/run/bacula"

# Максимальное количество выполняемых заданий.

# (не рекомендуется одновременно запускать более одного задания)

Maximum Concurrent Jobs = 1

# Пароль Директора

Password = "dirpass"

# Конфигурация параметров уведомлений (описано в секции Messages)

Messages = Daemon

# fqdn имя или IP-адрес Директора

DirAddress = 192.168.244.70

}


Catalog {

# наименование Bacula Catalog

Name = BaculaCatalog

# адрес сервера БД PostgreSQL

DB Address = 192.168.244.70

# порт подключения на сервере

DB PORT = 5432

# имя базы данных на сервере PostgreSQL

dbname = bacula

# имя пользователя базы данных на сервере PostgreSQL

dbuser = bacula

# пароль пользователя базы данных на сервере PostgreSQL

dbpassword = bacula

}


JobDefs {

# Имя задания

Name = "DefaultJob"

# Тип задания (backup, restore и т.д.)

Type = Backup

# Уровень бэкапа (Full, Incremental, Differential и т.п)

Level = Incremental

# Имя клиента на котором выполняется задание

Client = dir-fd

# Набор файлов для выполнения задания

FileSet = "Full Set"

# Расписание выполнения задания

Schedule = "WeeklyCycle"

# Файловое хранилище

Storage = stor-sd

# Поведение уведомлений

Messages = Standard

# Пул, куда будем писать бэкапы. Если мы хотим сделать отдельный пул для каждого клиента,

# или использовать префиксы, тогда пул указывается в задании для каждого клиента

# переопределяя тем самым эту настройку

Pool = File

# Буферизация атрибутов файлов

SpoolAttributes = yes

# Приоритет. Давая заданиям приоритеты от 1 (max) до 10 (min), можно регулировать последовательность их выполнения.

Priority = 10

# Файл хранит информацию откуда извлекать данные при восстановлении

Write Bootstrap = "/var/lib/bacula/%c.bsr"

}


Storage {

# имя Хранилища

Name = stor-sd

# fqdn имя или IP-адрес хранилища.

# Даже если хранилище на этой же машине "localhost" использовать не рекомендуется

Address = 192.168.244.80

# порт оставляем стандартный

SDPort = 9103

# пароль Хранилища

Password = "storpass"

# имя устройства хранения, описаное в файле bacula-sd.conf

Device = Autochanger1

# Должно соответствовать директиве Media Type ресурса Device настройки

Media Type = File1

# Максимальное количество выполняемых заданий.

# (не рекомендуется одновременно запускать более одного задания)

Maximum Concurrent Jobs = 1
}


Pool {

# имя пула, указывается в заданиях резервного копирования

Name = File

# тип пула

Pool Type = Backup

# Bacula может автоматически очищать или перезаписывать тома пула

Recycle = yes

# период в течении которого информация о заданиях и файлах хранится в БД, по истечению периода эта информация удаляется

Volume Retention = 365 days

# удалять из БД записи о заданиях и файлах , срок хранения которых истёк в соответствии с Volume Retention

AutoPrune = yes

# максимальный объем тома в пуле

Maximum Volume Bytes = 50G

# максимальное количество томов в пуле

Maximum Volumes = 100

# с каких символов начинаются имена томов пула

Label Format = "Vol-"

}


# Данная секция описывает стандартное поведение уведомлений

Messages {

# имя

Name = Standard

# команда отправки письма

mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: %t %e of %c %l\" %r"

команда для передачи сообщений оператору

operatorcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"

# куда = кому = и какие уведомления отправлять

mail = root = all, !skipped

требование к оператору смонтировать том по необходимости

operator = root = mount

# какие сообщения выводить в консоль

console = all, !skipped, !saved

# путь к логу = какие сообщения записывать в лог

append = "/var/log/bacula/bacula.log" = all, !skipped

# записывать в СУБД в таблицу Log; очищается одновременно с удалением записи о задании

catalog = all

}


# Данная секция описывает поведение уведомлений непосредственно Для самого демона Bacula

Messages {

# имя

Name = Daemon

# команда отправки письма

mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"

# куда = кому = и какие уведомления отправлять

mail = root = all, !skipped

# какие сообщения выводить в консоль

console = all, !skipped, !saved

# путь к логу = какие сообщения записывать в лог

append = "/var/log/bacula/bacula.log" = all, !skipped

}


# Дальнейшие строчки подгружают все конфигурационные файлы из папок

# «job.d» «client.d» «fileset.d» «schedule.d»

@|"sh -c 'for f in /etc/bacula/job.d/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/client.d/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/fileset.d/*.conf ; do echo @${f} ; done'"

@|"sh -c 'for f in /etc/bacula/schedule.d/*.conf ; do echo @${f} ; done'"

Дополнительные конфигурационные файлы (Фрагментация конфигурации)

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

В моем случае ресурсы DefaultJob (Шаблонное задание)Storage (Хранилище), Pool (Пул томов) и Messages (Уведомления) в виду их небольшого количества описаны в основном конфигурационном файле. Остальные файлы конфигурации мы разложим по отдельным папкам и дадим им понятные названия. Делается это в первую очередь для того, чтобы избежать разрастания основного конфигурационного файла до больших размеров, а так же для гибкости настройки.

Создадим папки:

Папка в которой будут находиться файлы настроек расписаний «schedule.d»

sudo mkdir /etc/bacula/schedule.d/

Папка в которой будут находиться файлы настроек Клиентов «client.d»

sudo mkdir /etc/bacula/client.d/

Папка в которой будут находиться файлы настроек наборов файлов Клиентов «fileset.d»

sudo mkdir /etc/bacula/fileset.d/

Папка в которой будут находиться файлы настроек заданий «job.d»

sudo mkdir /etc/bacula/job.d/

Конфигурации расписании (Schedule's)

Создадим файл настроек расписания обработки файлов при выполнении заданий для нашего Клиента (пустой):

sudo touch /etc/bacula/schedule.d/dir-fd.conf

И приступим к его заполнению:

Schedule {

# Имя расписания

Name = "WeeklyCycle"

# Тип бекапа, периодичность и время запуска

Run = Full 1st sun at 23:05

Run = Differential 2nd-5th sun at 23:05

Run = Incremental mon-sat at 23:05

}

Создадим файл настроек расписания обработки файлов при выполнении заданий для Bacula Catalog (пустой):

sudo touch /etc/bacula/schedule.d/catalog.conf

И приступим к его заполнению:

Schedule {

# Имя расписания

Name = "WeeklyCycleAfterBackup"

# Тип бекапа, периодичность и время запуска

Run = Full sun-sat at 23:10

}

Конфигурация Клиента (Client)

Создадим файл настроек Клиента (пустой):

sudo touch /etc/bacula/client.d/dir-fd.conf

И приступим к его заполнению:

при копировании проверяйте правильность указанных IP адресов

Client {

# имя Клиента

Name = dir-fd

# fqdn имя или IP-адрес Клиента

Address = 192.168.244.90

# порт, который клиент слушает

FDPort = 9102

# имя PostgreSQL базы данных Bacula

Catalog = BaculaCatalog

# пароль Клиента

Password = "clientpass"

# период, в течении которого информация о ФАЙЛАХ хранится в базе данных

File Retention = 60 days

# период, в течении которого информация о ЗАДАНИЯХ хранится в базе данных

Job Retention = 6 months

# удалять записи из Bacula Catalog старше вышеуказанных значений

AutoPrune = yes

}

Конфигурации наборов файлов (FileSet's)

Создадим файл настроек наборов файлов Клиента:

sudo touch /etc/bacula/fileset.d/dir-fd.conf

И приступим к его заполнению:

FileSet {

# Имя Клиента

Name = "Full Set"

# Секция содержит пути к резервируемым файлам/каталогам

Include {

# Секция определяющая параметры резервирования файлов/каталогов

Options {

# Параметр указывает алгоритм вычисления контрольных сумм файлов

# разработчики яро рекомендуют использовать это опцию,

# создается сигнатура забекапленных файлов в md5

signature = MD5

# Параметр указывает алгоритм компрессии файлов

Compression = GZIP

# Параметр указывает на необходимость рекурсивного резервирования,

recurse = yes

# Параметр указывающий на необходимость сохранения ACL информации

aclsupport = yes

# указывает на возможность включения поддержки расширенных атрибутов,

# !!! это обязательный параметр для работы с метками безопасности

xattrsupport = yes

}

# При наличии в пути пробелов нужно использовать двойные кавычки

# Слэш нужно всегда экранировать, или можно использовать бэкслэш.

File = /home

}

# Секция содержит пути к файлам/каталогам,

# которые необходимо исключить из списка резервируемых

Exclude {

File = /tmp

}

}

Создадим файл настроек наборов файлов Bacula Catalog:

sudo touch /etc/bacula/fileset.d/catalog.conf

И приступим к его заполнению:

FileSet {

# Имя Клиента

Name = "Catalog"

# Секция содержит пути к резервируемым файлам/каталогам

Include {

# Секция определяющая параметры резервирования файлов/каталогов

Options {

# Параметр указывает алгоритм вычисления контрольных сумм файлов

# разработчики яро рекомендуют использовать это опцию,

# создается сигнатура забекапленных файлов в md5

signature = MD5

# Параметр указывает алгоритм компрессии файлов

Compression = GZIP

# Параметр указывающий на необходимость сохранения ACL информации

aclsupport = yes

# указывает на возможность включения поддержки расширенных атрибутов,

# !!! это обязательный параметр для работы с метками безопасности

xattrsupport = yes

}

# При наличии в пути пробелов нужно использовать двойные кавычки

# Слэш нужно всегда экранировать, или можно использовать бэкслэш.

File = /var/lib/bacula/bacula.sql

}

}

Конфигурации файлов заданий (Job's)

Создадим  файл настроек задания для резервирования файлов Клиента (пустой):

sudo touch /etc/bacula/job.d/backup-dir-fd.conf

И приступим к его заполнению:

Job {

Имя задания

Name = "BackupClient1"

Имя шаблонного задания

JobDefs = "DefaultJob"

}

Создадим  файл настроек задания для восстановления файлов Клиента (пустой)::

sudo touch /etc/bacula/job.d/restore-dir-fd.conf

И приступим к его заполнению:

Job {

# Имя задания

Name = "RestoreFiles"

# Тип задания (backup, restore и т.д.)

Type = Restore

# Клиент на который нужно восстановить файлы

Client=dir-dir

# Набор восстанавливаемых файлов

FileSet="Full Set"

# Хранилище где лежит бекап клиента

Storage = stor-sd

Пул томов где лежит бекап клиента

Pool = File

# Поведение уведомлений

Messages = Standard

# Куда на клиенте восстанавливать файлы

Where = /restore

}

Создадим  файл настроек задания для резервирования файлов Bacula Catalog:

sudo touch /etc/bacula/job.d/catalog.conf

И приступим к его заполнению:

Job {

Имя задания

Name = "BackupCatalog"

Имя шаблонного задания

JobDefs = "DefaultJob"

# Уровень бэкапа

Level = Full

# Набор восстанавливаемых файлов

FileSet="Catalog"

# Расписание

Schedule = "WeeklyCycleAfterBackup"

# скрипт выполняемый до основного задания

RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl BaculaCatalog"

# скрипт выполняемый после основного задания

RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"

# Файл хранит информацию откуда извлекать данные при восстановлении

Write Bootstrap = "/var/lib/bacula/%n.bsr"

# Приоритет запуска после выполнения основного бекапа

Priority = 11

}

Для того, чтобы при выполнении резервного копирования не регистрировались ошибки вида:

14-июл 13:47 dir-dir JobId 3: shell command: run AfterJob "/etc/bacula/scripts/delete_catalog_backup"
14-июл 13:47 dir-dir JobId 3: Error: Runscript: AfterJob returned non-zero status=208. ERR=Нет такого файла или каталога

следует в файле  /etc/bacula/job.d/catalog.conf  закомментировать параметры RunBeforeJob и RunAfterJob, определяющие файлы сценариев, автоматически вызыветмых до и после выполнения резервного копирования (или создать эти файлы с пустыми сценариями для дальнейшего использования):

# скрипт выполняемый до основного задания
#RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup.pl BaculaCatalog"
# скрипт выполняемый после основного задания
#RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"

Присвоение необходимых прав созданным файлам и папкам и назначение им владельца (chmod and chown on file's and dir's)

Далее нам необходимо присвоить необходимые права созданным файлам и папкам и назначить им владельца командами:

sudo chmod 644 /etc/bacula/bacula-dir.conf
sudo chown root:bacula /etc/bacula/bacula-dir.conf

sudo chmod 755 /etc/bacula/job.d/
sudo chown root:bacula /etc/bacula/job.d/
sudo chmod 644 /etc/bacula/job.d/*
sudo chown root:bacula /etc/bacula/job.d/*

sudo chmod 755 /etc/bacula/client.d/
sudo chown root:bacula /etc/bacula/client.d/
sudo chmod 644 /etc/bacula/client.d/*
sudo chown root:bacula /etc/bacula/client.d/*

sudo chmod 755 /etc/bacula/fileset.d/
sudo chown root:bacula /etc/bacula/fileset.d/
sudo chmod 644 /etc/bacula/fileset.d/*
sudo chown root:bacula /etc/bacula/fileset.d/*

sudo chmod 755 /etc/bacula/schedule.d/
sudo chown root:bacula /etc/bacula/schedule.d/
sudo chmod 644 /etc/bacula/schedule.d/*
sudo chown root:bacula /etc/bacula/schedule.d/*

Bacula Admin Tool (bat.conf)

Далее необходимо настроить доступ графической оболочки "Bacula Admin Tool" к Директору

Бекапим файл:

sudo cp /etc/bacula/bat.conf /etc/bacula/backup-default-conf/bat.conf

И заполняем его следующими параметрами

при копировании проверяйте правильность указанных IP адресов

Director {

# Имя Директора

Name = dir-dir

# Порт Директора

DIRport = 9101

fqdn имя или IP-адрес Директора

address = 192.168.244.70

# пароль Директора

Password = "dirpass"

}

Bacula Console (bconsole.conf)

Далее необходимо настроить доступ интерфейса администратора системы "Bacula Console" к Директору

Бекапим файл:

sudo cp /etc/bacula/bconsole.conf /etc/bacula/backup-default-conf/bconsole.conf

И заполняем его следующими параметрами

при копировании проверяйте правильность указанных IP адресов

Director {

# Имя Директора

Name = dir-dir

# Порт Директора

DIRport = 9101

# fqdn имя или IP-адрес Директора

address = 192.168.244.70

# пароль Директора

Password = "dirpass"

}

Перезапуск сервиса Директора

Необходимо перезапустить сервис командой:

sudo systemctl restart bacula-director.service

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

sudo journalctl -xe


Создаем сценарий script.sh со следующим содержимым:

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

Перед выполнением сценария присвоить ему маску 777 ( sudo chmod 777 script.sh )

Выполнять сценарий из под администратора системы с высоким МКЦ и с использованием механизма sudo ( sudo ./script.sh )

При копировании проверяйте правильность указанных IP адресов и синтаксис (точки, пробелы, слэши, кавычки, апострофы и тп - могут быть неправильно перенесены)

Данный сценарий лишь открывает на редактирование созданные файлы, а не заполняет их!!!

#!/bin/bash

mkdir /etc/bacula/backup-default-conf
mv /etc/bacula/bacula-dir.conf /etc/bacula/backup-default-conf/bacula-dir.conf
touch /etc/bacula/bacula-dir.conf
mcedit /etc/bacula/bacula-dir.conf

mkdir /etc/bacula/schedule.d/
mkdir /etc/bacula/client.d/
mkdir /etc/bacula/fileset.d/
mkdir /etc/bacula/job.d/

touch /etc/bacula/schedule.d/dir-fd.conf
mcedit /etc/bacula/schedule.d/dir-fd.conf
touch /etc/bacula/schedule.d/catalog.conf
mcedit /etc/bacula/schedule.d/catalog.conf

touch /etc/bacula/client.d/dir-fd.conf
mcedit /etc/bacula/client.d/dir-fd.conf

touch /etc/bacula/fileset.d/dir-fd.conf
mcedit /etc/bacula/fileset.d/dir-fd.conf
touch /etc/bacula/fileset.d/catalog.conf
mcedit /etc/bacula/fileset.d/catalog.conf

touch /etc/bacula/job.d/backup-dir-fd.conf
mcedit /etc/bacula/job.d/backup-dir-fd.conf
touch /etc/bacula/job.d/restore-dir-fd.conf
mcedit /etc/bacula/job.d/restore-dir-fd.conf
touch /etc/bacula/job.d/catalog.conf
mcedit /etc/bacula/job.d/catalog.conf

chmod 644 /etc/bacula/bacula-dir.conf
chown root:bacula /etc/bacula/bacula-dir.conf

chmod 755 /etc/bacula/job.d/
chown root:bacula /etc/bacula/job.d/
chmod 644 /etc/bacula/job.d/*
chown root:bacula /etc/bacula/job.d/*

chmod 755 /etc/bacula/client.d/
chown root:bacula /etc/bacula/client.d/
chmod 644 /etc/bacula/client.d/*
chown root:bacula /etc/bacula/client.d/*

chmod 755 /etc/bacula/fileset.d/
chown root:bacula /etc/bacula/fileset.d/
chmod 644 /etc/bacula/fileset.d/*
chown root:bacula /etc/bacula/fileset.d/*

chmod 755 /etc/bacula/schedule.d/
chown root:bacula /etc/bacula/schedule.d/
chmod 644 /etc/bacula/schedule.d/*
chown root:bacula /etc/bacula/schedule.d/*

cp /etc/bacula/bat.conf /etc/bacula/backup-default-conf/bat.conf
mcedit /etc/bacula/bat.conf

cp /etc/bacula/bconsole.conf /etc/bacula/backup-default-conf/bconsole.conf
mcedit /etc/bacula/bconsole.conf

systemctl restart bacula-director.service

Настройка закончена, если все прошло без ошибок, то можно и НУЖНО(!!!) сделать снимок ВМ Директора.
  • No labels