Данная статья не претендует на руководство, и рассматривается исключительно как шпаргалка. Что же такое 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. 2. 3. Если вам понадобиться еще раз пройти этап конфигурации наберите в командной строке 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_backupRunBeforeJob = "/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 = admin@domain = 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 }
- Войдите или зарегистрируйтесь, чтобы оставлять комментарии