Данная статья не претендует на руководство, и рассматривается исключительно как шпаргалка.
Что же такое Bacula? Для этого обратимся к первоисточнику - www.bacula.org. - Bacula - это программный комплекс позволяющий системному администратору управлять резервным копированием и восстановлением данных используя различные типы носителей, включая ленты и диски.
С технической точки зрения, это сетевой клиент/сервер резервного копирования. Бакула состоит из следующих компонентов:
Bacula Director - основная часть контролирующая всё резервное копирование, восстановление, проверку и операции с архивами, а также планирование создания архивов.
Bacula Console - служба позволяющая администратору или пользователю работать с Bacula Director.
В настоящее время консоль доступна в четырёх версиях: текстовой, GNOME-интерфейс, QT-интерфейс и WxWidgets графическим интерфейсом
Bacula File - клиентская часть, управляемая Bacula Director.
Bacula Storage - сервис отвечающий за физические накопители хранения/восстановления резервных копий. (Сервер хранения)
Catalog - отвечает за хранение файла индексов и объемов баз данных для всех файлов резервных копий. В данный момент Bacula поддерживает три базы данных для хранения - MySQL, PostgreSQL и SQLite
Bacula Monitor - это программа, которая позволяет администратору или пользователю наблюдать за текущим статусом Bacula.
Установка Bacula
Установка Bacula на Debian максимальна проста:
Подразумевается, что mysql-server уже установлен.
1. 
Если вам понадобиться еще раз пройти этап конфигурации наберите в командной строке
dpkg-reconfigure bacula-director-mysql
Перейдем к основному этапу - Настройка
Сперва настраиваем bacula-fd (файловый сервер)
#
# Список директоров которые имею доступ к этому демону
Director {
Name = host-dir
Password = "secret"
}
#
# "Global" File daemon configuration specifications
#
FileDaemon {
Name = host-fd #Уникальное имя используемое директором
FDport = 9102 # порт на котором "слушает" наш файловый сервер
WorkingDirectory = /var/lib/bacula
Pid Directory = /var/run/bacula
Maximum Concurrent Jobs = 20 #Количество одновременно выполняемых заданий директора
FDAddress = 10.10.0.1 #адрес на котором "слушает" файловый сервер, если не указывать этот
#параметр - демон будет слушать на всех доступных адресах
}
#отправляем все сообщения на диретор, исключая список файлов, которые были пропущены при
#копировании согласно настройке и список восстановленных файлов.
Messages {
Name = Standard
director = host-dir = all, !skipped, !restored
}
Вместо FDAddress можно использовать директиву FDAddress, которая позволяет определять группы адресов, портов. Например:
FDAddresses = {
ip = { addr = 1.2.3.4; port = 1205; }
ipv4 = {
addr = 1.2.3.4; port = http; }
ipv6 = {
addr = 1.2.3.4;
port = 1205;
}
ip = {
addr = 1.2.3.4
port = 1205
}
ip = { addr = 1.2.3.4 }
ip = {
addr = 201:220:222::2
}
ip = {
addr = bluedot.thun.net
}
}
Настраиваем наш сервер хранения
Storage {
Name = host-sd #Имя сервера хранения
SDPort = 9103 #Порт на котором будем ждать подключения
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = 10.10.0.1 #Аналогичен FDAddress
}
#
#Список директоров имеющих доступ к серверу хранения
#
Director {
Name = host-dir #Имя директора
Password = "secret"
}
#
# Devices supported by this Storage daemon
# To connect, the Director's bacula-dir.conf must have the
# same Name and MediaType.
#
Device {
Name = FileStorage #Имя используемое директором
Media Type = File #Тип носителя
Archive Device = /mnt/backup/bacula #имя устройства НМЛ, DVD или каталога
LabelMedia = yes; #для записи на диск предпочтительно указать "yes", что
#позволяет автоматически размечать тома в соответствии с
#директивой LabelFormat ресурса Pool в настройках директора
Random Access = Yes; #Включение поддержки lseek
AutomaticMount = yes;
RemovableMedia = no; #при использовании съемных накопителей (CD, DVD, НМЛ и пр.)
#указываем yes
AlwaysOpen = no; #no - устройство открывается только по требованию, в случае
#хранения в файл - эта директива игнорируется
}
#
# Пересылаем все сообщения
Messages {
Name = Standard
director = host-dir = all
}
Переходим к основному этапу настройки - настройке директора
Director {
Name = host-dir #Имя директора
DIRport = 9101 #определение порта
QueryFile = "/etc/bacula/scripts/query.sql" #шаблоны SQL-запросов
WorkingDirectory = "/var/lib/bacula" #Рабочая директория
PidDirectory = "/var/run/bacula"
Maximum Concurrent Jobs = 1 #количество одновременно выполняемых заданий
Password = "secret" #Пароль консоли
Messages = Daemon #Имя ресурса Messages, который будет использоваться
#для обработки сообщений
DirAddress = 10.10.0.1 #Адрес который будет "слушать" директор, если
#опустить этот параметр - директор будет "слушать"
#все доступные адреса
}
JobDefs { #имя шаблона задания; значения директив из JobDefs используются в
Name = "DefaultJob" #качестве умолчания
Type = Backup #Тип задачи (Backup, Restore, Verify, Admin, Migrate)
Level = Incremental #Уровень для Backup:Full, Incremental, Differential, VirtualFull
#для Verify: InitCatalog, Catalog, VolumeToCatalog, DiskToCatalog
FileSet = "Full Set" #Определение файлов и каталогов для резервного копирования
Schedule = "WeeklyCycle" #Расписание выполнения задачи
Storage = File #устройство хранения
Messages = Standard
Pool = Default #имя ресурса; для задания резервного копирования определяет пул для
#записи, для задания миграции - исходный пул для поиска копируемых
#заданий
Priority = 10 #Приоритет выполнения задач, чем меньше значение тем выше
#приоритет
}
# Описание задания
Job {
Name = "BackupCatalog"
JobDefs = "DefaultJob"
Level = Full
FileSet="Full Set"
Schedule = "WeeklyCycleAfterBackup"
# make_catalog_backup
RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula secretsql"
# This deletes the copy of the catalog
RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"
Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr"
Priority = 11
}
Job {
Name = "Tux"
JobDefs = "DefaultJob"
Level = Full
FileSet="Full Tux"
Schedule = "Tux"
Client = debian-fd
# make_catalog_backup
RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula secretsql"
# This deletes the copy of the catalog
RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"
Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr"
Priority = 11
}
Job {
Name = "Host2"
JobDefs = "DefaultJob"
Level = Full
FileSet="Full Host2"
Schedule = "WeeklyCycleAfterBackup"
Client = host2-fd
# make_catalog_backup
RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula secretsql"
# This deletes the copy of the catalog
RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"
Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr"
Priority = 11
}
Job {
Name = "host3"
JobDefs = "DefaultJob"
Level = Full
FileSet="host3"
Schedule = "WeeklyCycleAfterBackup"
Client = netup-fd
# make_catalog_backup
RunBeforeJob = "/etc/bacula/scripts/make_catalog_backup bacula bacula secretsql"
# This deletes the copy of the catalog
RunAfterJob = "/etc/bacula/scripts/delete_catalog_backup"
Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr"
Priority = 11 # run after main backup
}
#
# Standard Restore template, to be changed by Console program
# Only one such job is needed for all Jobs/Clients/Storage ...
#
Job {
Name = "RestoreFiles"
Type = Restore
Client=host-fd
FileSet="Full Set"
Storage = File
Pool = Default
Messages = Standard
Where = /mnt/backup/bacula
}
# List of files to be backed up
FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
}
#
# Put your list of files here, preceded by 'File =', one per line
# or include an external list with:
#
# File = \" -s \"Bacula: %t %e of %c %l\" %r"
operatorcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula: Intervention needed for %j\" %r"
mail = tux@kahovka.net = all, !skipped
operator = admin@admin = mount
console = all, !skipped, !saved
#
# WARNING! the following will create a file that you must cycle from
# time to time as it will grow indefinitely. However, it will
# also keep all your messages if they scroll off the console.
#
append = "/var/lib/bacula/log" = all, !skipped
}
#
# Message delivery for daemon messages (no job).
Messages {
Name = Daemon
mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r"
mail = root@localhost = all, !skipped
console = all, !skipped, !saved
append = "/var/lib/bacula/log" = all, !skipped
}
# Default pool definition
Pool {
Name = Default
Pool Type = Backup
Recycle = yes # Bacula can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days # one year
}
# Scratch pool definition
Pool {
Name = Scratch
Pool Type = Backup
}
#
# Restricted console used by tray-monitor to get the status of the director
#
Console {
Name = host-mon
Password = "secret"
CommandACL = status, .status
}
продолжение следует
Комментарии
Вот я себе тоже настроил.
Вот я себе тоже настроил. На фряхе, но, думается, тут это особого значения не имеет. Периодически сыпятся сообщения вида:
Надоело жутко. Как с этим бороться вообще?
Я, кстати, так до конца и не понял логину бакулы с этими лейблами и томами.
как вариант
как вариант - директор не видит сервера хранения. К сожалению, времени не хватает все описать, но этот вопрос постараюсь раскрыть.