В данной статье описывается система резервного копирования на основе программы с открытым исходным кодом - Bacula.
Общее описание системы и ее компонентов
Общая схема системы бекапирования представлена на рис. 1.
В систему входят: директор (Director), хранилище (Storage Daemon), клиент (File Daemon), каталог (Catalog) и консоль (Console).
Директор - это программа, которая курирует все операции резервного копирования и восстановления. Администратор использует директор для планирования бекапов и восстановления.
Консоль — это программа, которая позволяет администратору или пользователю подключаться к директору.
Клиент — это программа, которая устанавливается на компьютере, которому требуется резервное копирование. Отвечает за сбор информации о бекапируемых файлах и передачи их атрибутов директору, а также отвечает за передачу данных в хранилище.
Хранилище представляет собой программу, которая обеспечивает хранение и восстановление данных, другими словами эта программа позволяет читать и записывать данные на физических носителях.
Каталог представляет собой программу для связывания файловых индексов с базой данных физических носителей для всех забекапленых файлов. Каталог позволяет администратору быстро найти и восстановить любой файл.
В качестве каталога может использоваться одна из трех баз данных MySQL, PostgreSQL и SQLite. В наше примере использована БД PostgreSQL.
Файлы конфигурации системы, запускаемые процессы.
Директор - самый важный компонент. Он ведает всеми клиентами, сторожами, пулами (Pool), планирует (Schedule) и инициирует начало работ (Job), создает список файлов и каталогов для бекапирования (FileSet). Через директора осуществляется взаимодействие с каталогом.
Основной конфигурационный файл — bacula-dir.conf.
Основной конфиг делится на несколько секций:
Секция Director - описание директора.
Здесь задается имя директора, порт, который он будет слушать, задается пароль, для авторизации консолей. WorkingDirectory назначает директорию для хранения бутстрапов (Bootstrap) работ.
Секция Storage — секция подключения сторожей.
В секции описаны сторожи, где bacula может сохранять бекапы. Задаются имя сторожа, IP адрес или DNS-имя сервера со storage-демоном (SD), порт, пароль от демона, устройство (Device) который предоставляет для записи SD, тип устройства (File или Лента).
Секция Pool — описание пулов.
В этой секции проводится описание пулов. Пулы служат для управления томами (Volume). В этой секции описывается тип пула (Backup, Scratch, Migration), задается формат имени тома - LabelFormat, Volume Retention - время, в течении которого, том гарантировано не будет использован другими работами (данные не будут перезаписаны), после этого времени том освобождается для новых работ.
Секция JobDefs - шаблоны работ.
В этой секции задаются значения по умолчанию, с которыми будет стартовать та или иная работа. Это существенно сокращает в дальнейшем описание опций самой работы. Здесь заданы имя шаблона, тип работы.
Секция Job — описание работ.
В этой секции описывается: какого клиента бекапить и где сохранять бекапы, назначается расписание запуска ful- и incremental-бекапа, а также назначается fileset — список бекапируемых и не бекапируемых файлов. Для unix серверов стандартный fileset - /usr/local/bacula/etc/filelist/unix.conf, а для windows - /usr/local/bacula/etc/filelist/windows.conf. Так как работы в основном стандартные, то описание работы можно строить на основе шаблонов JobDefs.
Секция Messages — система отчетов.
Bacula ведет журнал всех выполняемых работ. Отчеты отсылаются по трем направлениям: консоль оператора, файл логов и электронная почта. Соответственно, в этой секции описывается какие сообщения отсылать на консоль оператора — console, какую информацию записывать в журнальный файл - append, на какой почтовый ящик отсылать email отчеты mail = bacula-report@exmple.com. Команды отправки писем определяются директивами mailcommand и operatorcommand.
Секция Catalog.
Здесь даются параметры подключения к БД.
Секция Client — клиенты bacula.
В этой секции определяются параметры подключения к файловому демону (FD) клиента bacula. Задается IP адрес или DNS имя клиента, порт и пароль. Можно также поменять БД, в которой сохранять данные по файлам и работам этого клиента. Директивами File Retention и Job Retention задаются сроки хранения данных о файлах и работах клиента, соответственно. Bacula хранит информацию о всех работах, файлах и томах 15 дней.
Управление директором осуществляется с помощью консоли - bconsole. Существует также ряд GUI-консолей: bgnome-console, bwxconsole, а также BAT - Bacula Administration Tool.