Установка сервера Bacula в Ubuntu 14.04

Bacula – это средство резервного копирования с открытым исходным кодом, которое позволяет создавать резервные копии и выполнять восстановление данных в компьютерных системах. Программа Bacula очень гибкая и надежная, хотя и немного сложна в настройке. Система резервного копирования – важный компонент большинства серверных инфраструктур, так как восстановление данных часто является одним из основных этапов  плана аварийного восстановления всей системы.

Данное руководство научит устанавливать и настраивать серверные компоненты Bacula на сервере Ubuntu 14.04. Здесь вы узнаете, как с помощью Bacula создавать локальные резервные копии (т. е. резервные копии хоста, на котором установлена система Bacula). Возможно, это не самый продуктивный пример использования Bacula, но на его основе можно разработать более сложные настройки для бэкапа других серверов, например, клиентов.

Читайте также: Установка сервера Bacula в CentOS 7

Требования

  • Сервер Ubuntu 14.04
  • Пользователь с доступом к sudo (подробнее – здесь).
  • Частная сеть на сервере для Bacula. Все клиенты должны находиться в одном ЦОД.
  • FQDN серверов (например, bacula.private.example.com). Если у вас нет соответствующих настроек DNS, вместо этого можно использовать IP-адреса серверов. Если у вас нет частной сети, замените все данные о сетевых соединениях в этом руководстве доступными сетевыми адресами (например, внешними IP-адресами или VPN-туннелями).

Компоненты Bacula

Bacula состоит из нескольких программных компонентов и основывается на модели «сервер-клиент». Рассмотрим компоненты Bacula подробнее.

  • Сервер Bacula (также сервер бэкапа) включает в себя следующие компоненты:
    Bacula Director (DIR): программное обеспечение, которое управляет операциями резервного копирования и восстановления, выполняемыми демонами File и Storage.
  • Storage Daemon (SD): программное обеспечение, которое выполняет операции чтения и записи на устройствах хранения, используемых для резервного копирования.
  • Catalog (каталог): сервисы, которые поддерживают базу данных резервных копий файлов. Данные хранятся в БД SQL, например, в MySQL или PostgreSQL.
  • Bacula Console: интерфейс командной строки, который позволяет администратору резервного копирования взаимодействовать с Bacula Director и управлять им.

Примечание: Компоненты сервера Bacula не обязательно запускать на одном сервере.

Клиент Bacula (сервер, данные которого будут копироваться) запускает File Daemon (FD). Это программное обеспечение, которое предоставляет серверу Bacula (в частности, Bacula Director) доступ к данным, которые нужно скопировать. Такие серверы называются клиентами бэкапа, или просто клиентами.

Установка MySQL

Для хранения каталога данных Bacula использует БД SQL, такие как MySQL или PostreSQL. В этом руководстве предлагаем установить MySQL. Обновите индекс пакетов:

sudo apt-get update

Установите MySQL Server:

sudo apt-get install mysql-server

Программа запросит ввести пароль администратора (root) MySQL. Введите и подтвердите пароль.

Запомните его – он понадобится в дальнейшей работе (в частности для установки Bacula).

Установка Bacula

Чтобы установить клиент и сервер Bacula, введите:

sudo apt-get install bacula-server bacula-client

Программа запросит информацию для настройки Postfix:

  • General Type of Mail Configuration: выберите Internet Site.
  • System Mail Name: укажите FQDN или имя хоста.

Затем Bacula запросит информацию о базе данных:

  • Configure database for bacula-director-mysql with dbconfig-common?: выберите Yes.
  • Password of the database’s administrative user: введите root-пароль MySQL.
  • MySQL application password for bacula-director-mysql: Введите новый пароль и подтвердите его; чтобы программа выбрала случайный пароль, оставьте поле пустым.

Затем нужно обновить права на сценарий, который Bacula использует во время бэкапа каталога.

sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

Сервер и клиент Bacula установлены.

Каталоги для бэкапа и восстановления

Для хранения резервных копий и их восстановления Bacula использует каталоги backup и restore соответственно.

Если в системе несколько разделов, создайте каталоги в том разделе, в котором достаточно места.

Создайте новые каталоги:

sudo mkdir -p /bacula/backup /bacula/restore

Измените права доступа к каталогам. Они должны быть заблокированы для всех, кроме процесса bacula и суперпользователя.

sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

Настройка Bacula Director

Bacula состоит из нескольких компонентов, каждый из которых требует индивидуальной настройки. Все конфигурационные файлы хранятся в каталоге /etc/bacula.

Для начала настройте Bacula Director.

Откройте конфигурационный файл компонента:

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

Настройка локальных задач

Задачи Bacula (job) выполняют резервное копирование и восстановление данных. Ресурсы задания – это подробные данные о том или ином задании: имя клиента, файлы для бэкапа или восстановления (FileSet) и многое другое.

Попробуйте настроить задачу для резервного копирования локальной файловой системы.

Найдите ресурс Job с именем BackupClient1. Замените значение в строке Name именем BackupLocalFiles.

Job {
Name = "BackupLocalFiles"
JobDefs = "DefaultJob"
}

Затем найдите ресурс Job с именем RestoreFiles. В строке Name укажите имя RestoreLocalFiles, а в строке Where – каталог /bacula/restore.

Job {
Name = "RestoreLocalFiles"
Type = Restore
Client=BackupServer-fd
FileSet="Full Set"
Storage = File
Pool = Default
Messages = Standard
Where = /bacula/restore
}

Теперь RestoreLocalFiles сможет хранить файлы в каталоге /bacula/restore.

Файлы для бэкапа

FileSet определяет список файлов и каталогов, которые нужно включить или исключить из резервного копирования.

Найдите ресурс FileSet по имени Full Set (под комментарием # List of files to be backed up). Сюда нужно внести следующие изменения:

  • Добавить сжатие gzip.
  • В разделе Include заменить /usr/sbin в строке File на /.
  • В разделе Exclude во второй строке File указать /bacula.

FileSet {
Name = "Full Set"
Include {
Options {
signature = MD5
compression = GZIP
}
File = /
}
Exclude {
File = /var/lib/bacula
File = /bacula
File = /proc
File = /tmp
File = /.journal
File = /.fsck
}
}

Рассмотрим изменения в FileSet под названием Full Set. Во-первых, при создании резервного архива будет использоваться сжатие gzip. Во-вторых, в резервное копирование включается весь корневой раздел. В-третьих, из резервного копирования исключается каталог /bacula, потому что иначе Bacula будет создавать резервные копии каталога, в котором хранятся резервные копии.

Примечание: Если в / смонтированы другие разделы, которые нужно включить в FileSet, создайте в разделе Include дополнительные записи File для каждого из них.

Имейте в виду: резервные копии широких наборов FileSet (таких как Full Set) занимают больше места на диске, чем резервные копии более конкретных списков файлов. Например, если у вас есть четкий план, вам может хватить набора FileSet из пользовательских конфигурационных файлов и баз данных. Это поможет сэкономить дисковое пространство.

Настройка Storage Daemon

В конфигурационном файле Bacula Director есть ресурс Storage. Он определяет работу Storage Daemon, к которому подключается Director.

Найдите ресурс Storage. В строке Address замените значение localhost внутренним IP-адресом или FQDN.

Storage {
Name = File
# Do not use "localhost" here
Address = backup_server_private_FQDN                # N.B. Use a fully qualified name here
SDPort = 9103
Password = "ITXAsuVLi1LZaSfihQ6Q6yUCYMUssdmu_"
Device = FileStorage
Media Type = File
}

Это важно, поскольку демон Storage Daemon будет прослушивать интерфейс частной сети, чтобы поддерживать взаимодействие с удаленными клиентами.

Настройка пула

Ресурс Pool определяет набор хранилищ, используемых Bacula для записи резервных копий. В данном случае в качестве томов хранения используются файлы. Обновите метки, чтобы локальные резервные копии были правильно помечены.

Найдите ресурс Pool по имени File (под комментарием # File Pool definition). Добавьте в него строку Label Format.

# File Pool definition
Pool {
Name = File
Pool Type = Backup
Label Format = Local-
Recycle = yes                       # Bacula can automatically recycle Volumes
AutoPrune = yes                     # Prune expired volumes
Volume Retention = 365 days         # one year
Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
Maximum Volumes = 100               # Limit number of Volumes in Pool
}

Сохраните и закройте файл. Настройка компонента Bacula Director завершена.

Проверка настроек

Убедитесь, что в файле нет ошибок:

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

Если команда не вернула сообщений об ошибках, значит, bacula-dir.conf содержит правильные настройки.

Настройка Storage Daemon

Сервер Bacula почти готов. Осталось только настроить Storage Daemon, чтобы система Bacula понимала, где хранить файлы.

Откройте конфигурационный файл SD.

sudo vi /etc/bacula/bacula-sd.conf

Настройка ресурса Storage

Найдите в файле ресурс Storage. Он определяет, где процесс SD будет прослушивать соединения. Добавьте параметр SDAddress и укажите в нем FQDN (или внутренний IP-адрес) сервера бэкапа:

Storage {                             # definition of myself
Name = BackupServer-sd
SDPort = 9103                  # Director's port
WorkingDirectory = "/var/lib/bacula"
Pid Directory = "/var/run/bacula"
Maximum Concurrent Jobs = 20
SDAddress = backup_server_private_FQDN
}

Настройка устройства хранения

Затем найдите ресурс Device по имени FileStorage и обновите значение Archive Device, указав в нем путь к каталогу backup:

Device {
Name = FileStorage
Media Type = File
Archive Device = /bacula/backup
LabelMedia = yes;                   # lets Bacula label unlabeled media
Random Access = Yes;
AutomaticMount = yes;               # when device opened, read it
RemovableMedia = no;
AlwaysOpen = no;
}

Сохраните и закройте файл

Проверка настроек

Убедитесь, что в конфигурационном файле Storage Daemon нет ошибок.

sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

Если команда не выдала сообщений об ошибках, значит, в файле их нет.

Перезапуск Bacula Director и Storage Daemon

Чтобы обновить все настройки, перезапустите Bacula Director и Storage Daemon.

sudo service bacula-director restart
sudo service bacula-sd restart

Создание тестовой задачи

Для запуска первой задачи можно использовать Bacula Console.

Чтобы открыть консоль, введите:

sudo bconsole

Вы попадете в командную строку Bacula Console, которая обозначена символом *.

Создание метки

Введите команду label.

label

Команда запросит имя тома.

Enter new Volume name:
MyVolume

Затем выберите пул для бэкапа. В данном примере используется пул File. Чтобы выбрать его, введите 2.

Select the Pool (1-3):
2

Запуск резервного копирования вручную

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

run

Программа предложит выбрать задачу, которую нужно запустить. Чтобы выбрать BackupLocalFiles, введите 1.

Select Job resource (1-3):
1

Чтобы запустить задачу, на запрос Run Backup job нужно ответить yes.

yes

Проверка сообщений и состояния

После запуска задачи Bacula создаст сообщения, в которых хранится вывод, сгенерированный задачей.

Чтобы проверить сообщения, введите:

messages

В сообщениях должно быть указано «No prior Full backup Job record found» и что задача резервного копирования запустилась. Если при запуске задачи что-то пошло не так, в сообщениях вы найдете подсказки по устранению неполадок.

Также вы можете узнать состояние задачи. Для этого нужно запросить состояние Director. Введите в bconsole:

status director

Если задача выполняется успешно, вы увидите примерно такой вывод:

Running Jobs:
Console connected at 09-Apr-15 12:16
JobId Level   Name                       Status
======================================================================
3 Full    BackupLocalFiles.2015-04-09_12.31.41_06 is running
====

Когда задача будет завершена, в отчете о состоянии она перейдет в раздел Terminated Jobs:

Terminated Jobs:
JobId  Level    Files      Bytes   Status   Finished        Name
====================================================================
3  Full    161,124    877.5 M  OK       09-Apr-15 12:34 BackupLocalFiles

Состояние OK значит, что задача выполнена успешно.

Теперь у вас есть резервная копия Full Set, созданная с помощью Bacula.

Тестовое восстановление

Создав резервную копию, важно проверить ее восстановление. Команда restore позволяет восстанавливать скопированные файлы.

Полное восстановление

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

restore all

На экране появится меню, в котором можно выбрать резервный набор, который необходимо восстановить. Поскольку у вас есть только одна резервная копия, выберите вариант 5, «Select the most recent backup»:

Select item (1-13):
5

Поскольку в данной настройке есть всего один клиент, он будет выбран автоматически.

Затем программа предложит выбрать FileSet. Чтобы выбрать Full Set, введите 2.

Select FileSet resource (1-2):
2

Это переведет вас в виртуальное файловое дерево со всей структурой каталогов, которая находится в резервной копии. Этот интерфейс позволяет добавлять и исключать файлы, которые нужно восстановить.

Поскольку для восстановления использовалась команда restore all, все скопированные файлы уже выбраны. Файлы, которые входят в список восстанавливаемых, отмечены звездочкой *.

Чтобы откорректировать список файлов, вы можете перемещаться и просматривать содержимое с помощью команд cd и ls, а также добавлять и исключать файлы с помощью команд mark и unmark.

Чтобы получить полный список команд, введите help.

Выбрав все необходимые файлы, введите:

done

Подтвердите выбор:

OK to run? (yes/mod/no):
yes

Проверка сообщений и состояния

Как и после резервного копирования, после восстановления нужно проверить сообщения и состояние Director.

Проверьте сообщения:

messages

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

Проверьте состояние Director:

status director

Чтобы закрыть Bacula Console, введите:

exit

Проверка восстановления

Теперь убедитесь, что скопированные данные успешно восстановились. Откройте каталог /bacula/restore:

sudo ls -la /bacula/restore

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

Удаление восстановленных файлов

Вы можете удалить восстановленные файлы, чтобы освободить место на диске. Для этого используйте следующую команду:

sudo -u root bash -c "rm -rf /bacula/restore/*"

Запустите эту команду как root, так как многие восстановленные файлы принадлежат пользователю root.

Заключение

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

Читайте также: Резервное копирование сервера Ubuntu 14.04 с помощью Bacula

Tags: ,