Bacula

Решил все-таки разобраться с проблемой бэкапов раз и навсегда. rsnapshot вещь хорошая, но все-таки надо делать еще и полные бекапы иногда, а то реально можно оказаться у разбитого корыта.

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

короче, разбираемся с бакулой

что это?

Bacula — кроссплатформенное клиент-серверное программное обеспечение, позволяющее управлять резервным копированием, восстановлением, и проверкой данных по сети для компьютеров и операционных систем различных типов.
В настоящее время поддерживаются клиентские части для удалённого резервного копирования для Linux (включая zSeries), NetBSD, FreeBSD, OpenBSD, Solaris, HP-UX, Tru64, IRIX, Microsoft Windows, Mac OS X.
Bacula также может выполняться полностью на единственном компьютере или, распределённо, на нескольких, и может записывать резервные копии на различные типы носителей, включая ленты, ленточные библиотеки (autochangers/libraries) и диски.
Bacula — это сетевая клиент-серверная программа для резервного копирования, архивирования и восстановления. Предлагая широкие возможности для управления хранилищами данных, облегчает поиск и восстановление потерянных или повреждённых файлов. Благодаря модульной структуре, Bacula масштабируется и может работать как на маленьких так и на крупных системах, состоящих из сотен компьютеров, расположенных в большой сети.
К Bacula имеются GUI и веб-интерфейсы различной степени сложности.

Структура

Director (DIR) — осуществляет централизованный контроль и администрирование всего комплекса задач. Планирование и управление заданиями на резервное копирование (Job). Обслуживание Каталога (Catalog) — центральной БД для хранения метаданных.
File Daemon (FD) — сервис, выполняющий непосредственное копирование, восстановление и проверку данных по запросу Director. File Daemon должен быть установлен на каждой клиентской машине. File Daemon обменивается информацией с Director и Storage Daemon.
Storage Daemon (SD) — читает и пишет данные на физический носитель: диск, ленту, DVD, USB.
Console — управляющая консоль оператора или администратора. Поддерживаются ACL для разных пользователей консоли. Типы консолей: TTY, wxWidgets (GUI) для Linux, Unix, Win32, GNOME (GUI), несколько веб-интерфейсов, Qt4.
Catalog database — база данных SQL : MySQL, PostgreSQL, или SQLite для хранения метаданных.
Tray Monitor — апплет GNOME/KDE/Win32 GUI для показа активности Director, File daemons, Storage daemon в реальном времени.

Все указанные компоненты могут находиться как на одном компьютере, так и на нескольких, объединенных в сеть.

википедия

установка (debian)

для работы бакуле нужна база данных. Так что если еще не установлена — надо ставить mysql, а то будет sqllite по дефолту.

$ sudo apt-get update
$ sudo apt-get install mysql-server mysql-client
$ sudo apt-get install bacula-server bacula-client

при этом бакула упорно хочет поставить в качестве БД sqlite3
не люблю я ее, поэтому ее настройку скипаем нафиг.

не хочу дефолтную sqlite3, хочу нормальную mysql

$ sudo apt-get install bacula-common-mysql bacula-director-mysql

при установке bacula-director-mysql спросит пароль рута к мускулу и пароль к новой учетке для бакулы.

примечание

По факту с установкой я накувыркался. На оф сайте описана установка из исходников, что мне было делать влом. При установке по сетевым мануалам — что-то ставится что-то сносится. Какие-то непонятные зависимости, убивающие друг друга. Как одолел — вспомнить не могу.

при правильной установке должно завестись 3 демона:

$ netstat -l | grep bacula
tcp 0 0 comp.serv:bacula-dir *:* LISTEN
tcp 0 0 comp.serv:bacula-fd *:* LISTEN
tcp 0 0 comp.serv:bacula-sd *:* LISTEN

выхлоп sudo aptitude search ~ibacula:

i   bacula-client - network backup service - client metapackage  
i A bacula-common - network backup service - common support 
i   bacula-common-mysql - network backup service - MySQL common files 
i A bacula-console - network backup service - text console
i A bacula-director-common - network backup service - Director common files
i   bacula-director-mysql network backup service - MySQL storage for Director
i A bacula-fd - network backup service - file daemon
i   bacula-sd - network backup service - storage daemon
i   bacula-sd-mysql - network backup service - MySQL SD tools
i A bacula-traymonitor - network backup service - tray monitor

Настройка

Чтобы Bacula понял вашу систему, какие клиенты вы хотите резервировать и как, вы должны создать несколько конфигурационных файлов:

Основные определения

Люди избавились бы от половины своих неприятностей, если бы смогли договориться о значении слов

Рене Декарт

Для нашего случая:

Администратор (Administrator) — лицо, ответственное за администрирование Бакулы

Резервное копирование (Backup) — задание Бакулы по сохранению файлов

Загрузочный файл (Bootstrap File) — Загрузочный файл представляет собой файл ASCII, содержащий компанды в компактной форме, которые позволяют Bacula или автономной утилите извлечения файлов (bextract) восстановить содержимое одного или нескольких томов, например, текущее состояние только что созданной резервной копии системы. С загрузочным файлом Bacula может восстановить вашу систему без Каталога. Вы можете создать загрузочный файл из каталога, чтобы извлечь любой файл или файлы, которые вы захотите.

Каталог (Catalog) — Каталог используется для хранения сводной информации о Заданиях, Клиентах и Файлах, где что храниться, на каком томе или томах. Информация, сохраненная в Каталоге, позволяет администратору или пользователю определять, какие задания были запущены, их статус, а также важные характеристики каждого файла, в который была сделана резервная копия, и, что наиболее важно, он позволяет вам выбрать файлы для восстановления. Каталог является онлайн-ресурсом, но не содержит данные для файлов, резервное копирование которых выполнено. Большая часть информации, хранящейся в каталоге, также сохраняется на резервных томах (лентах). Конечно, ленты будут также иметь копию данных файла в дополнение к атрибутам файла (см. ниже).

Функция каталога является фичей Bacula, которая отличает его от простых программ резервного копирования и архивирования, таких как дамп и tar.

Клиент (Client) — В терминологии Бакулы слово «Клиент» ссылается на резервную копию машины и является синонимом файловых служб или файлового демона (сокращенно FD). Клиент определяется в файле конфигурации.

Консоль (Console) — Программа, для управления Директором, позволяющая пользователю или системному администратору управлять Bacula.

Демон (Daemon) — В терминологии Unix — программа, которая всегда присутствует в фоновом режиме для выполнения назначенной задачи. В системах Windows, а также в некоторых Unix-системах, демоны называются Сервисы или Службы.

Директива (Directive) — Термин Директива используется для ссылки на инструкцию или запись в файле конфигурации, который определяет одну конкретную настройку. Например, директива Name определяет имя ресурса.

Директор (Director) — Основной демон сервера Bacula, который планирует и направляет все операции Bacula. Иногда его называют просто DIR.

Дифференциальный (Differential) — Резервная копия, включающая все файлы, измененные с момента последнего полного сохранения. Обратите внимание, что другие программы резервного копирования могут давать этому термину другие определения.

 Атрибуты файла (File Attributes) — это вся необходимая информацияо файле, чтобы идентифицировать его и все ее свойства, такие как размер, дата создания, дата изменения, права доступа и т. д. Обычно атрибуты обрабатываются Бакулой полностью, так что пользователю не стоит переживать о них. Атрибуты не включают данные файла.

Файловый демон (File Daemon) — Демон, выполняемый на клиентском компьютере для резервного копирования. Это также называется файловой службой, а иногда службами клиента или просто FD.

Набор файлов (FileSet) — это ресурс, описанный в файле конфигурации, который определяет файлы для резервного копирования. Он состоит из списка включенных файлов или каталогов, списка исключенных файлов и способа сохранения файла (сжатие, шифрование, подписи). Для получения дополнительной информации см. Раздел FileSet ResourceFileSetResource в главе Director.

Инкрементный (Incremental) — Резервная копия, включающая все файлы, измененные с момента последнего полного, дифференциального или инкрементального резервного копирования. Обычно указывается в директиве Level в определении ресурса Job или в ресурсе Schedule.

Работа (Job) — Bacula Job — это ресурс конфигурации, который определяет задачу, которую Bacula должен выполнить для резервного копирования или восстановления конкретного клиента. Он состоит из типа (резервное копирование, восстановление, проверка и т. д.), Уровня (полного, инкрементального, …), набора файлов и хранилища, в которые должны быть скопированы файлы (устройство хранения, пул носителей). Для получения дополнительной информации см. Раздел «Ресурс ресурса» в разделе «Директор».

Монитор (Monitor) — Программа, которая взаимодействует со всеми демонами, позволяющая пользователю или системному администратору контролировать статус Bacula.

Ресурс (Resource) является частью (подразделом) конфигурационного файла, который определяет конкретную единицу информации, доступную Bacula. Он состоит из нескольких директив (отдельных конфигурационных инструкций). Например, ресурс Job определяет все свойства определенного задания: имя, расписание, пул томов, тип резервного копирования, уровень резервного копирования, …

Восстановление (Restore) — это ресурс конфигурации, описывающий операцию восстановления файла с резервного носителя. Это обратная операция сохранения, за исключением того, что в большинстве случаев восстановление обычно содержит небольшой набор файлов для восстановления, в то время как сохранение обычно сохраняет все файлы в системе. Конечно, после сбоя диска Bacula может быть вызван для полного восстановления всех файлов, которые были в системе.

Расписание (Schedule) — это ресурс конфигурации, который определяет, когда задание Bacula будет запланировано для выполнения. Чтобы использовать расписание, ресурс «Работа» должен быть указан в «Расписании». Для получения дополнительной информации см. «Определение расписания ресурса» в разделе «Директор»

Сервис (Service) — см демон

Координаты хранилища (Storage Coordinates) — Информация, возвращаемая службами хранения, которая находит файл на резервном носителе. Координаты хранилища состоят из двух частей: одна часть относится к каждому сохраненному файлу, а другая часть относится ко всему заданию. Обычно эта информация сохраняется в Каталоге, так что пользователю не нужны специальные знания о Координатах хранилища. Координаты хранилища включают атрибуты файлов (см. Выше) плюс уникальное расположение информации в томе резервной копии.

Демон хранения (Storage Daemon, SD) — программма, которая записывает атрибуты и данные в том хранилища (обычно это лента или диск).

Сессия (Session) — Обычно относится к внутреннему диалогу между файловым демоном и демоном хранения. Файловый демон открывает сеанс с демоном хранения, чтобы сохранить FileSet или восстановить его. Сессия имеет взаимно-однозначное соответствие с задачей (Job) Бакулы.

Проверка (Verify) — это задание, которое сравнивает текущие атрибуты файла с атрибутами, которые ранее были сохранены в каталоге Bacula. Эта функция может использоваться для обнаружения изменений в критических системных файлах, аналогично тому что делает средство проверки целостности файлов, такое как Tripwire. Одним из основных преимуществ использования Bacula для этого является то, что на машине, которую вы хотите защитить, например на сервере, вы можете запускать только демон FD, а Director, SD и Catalog находятся на другой машине. Как следствие, если ваш сервер был взломан, маловероятно, что ваша база данных проверки будет подделана.
Verify также может использоваться для проверки что самые последние записанные данные задания, согласуются с тем что хранится в каталоге (то есть сравнивает атрибуты файла), * или он может проверять содержимое тома с исходными файлами на диске.

Период хранения (Retention Period) — Существуют различные виды периодов хранения, которые признает Бакула. Наиболее важными являются период хранения файлов, период хранения заданий и период хранения тома. Каждый из этих периодов хранения относится ко времени хранения определенных записей в базе данных каталога. Не следует путать со временем, когда данные, сохраненные в томе, являются действительными.

Период хранения файлов определяет время хранения файлов в базе данных каталога. Этот период важен по двум причинам: во-первых, до тех пор, пока в базе данных остаются записи File, вы можете «просмотреть» базу данных с помощью консольной программы и восстановить любой отдельный файл. После удаления или удаления записей из базы данных отдельные файлы задания резервного копирования больше не могут быть просмотрены. Вторая причина тщательного выбора периода хранения файлов заключается в том, что в объеме записей Файла базы данных используется наибольшее пространство для хранения в базе данных. Как следствие, вы должны обеспечить регулярное «обрезку» записей файлов базы данных, чтобы ваша база данных не стала слишком большой. (Более подробную информацию по этой теме см. В команде Console prune).

Период хранения заданий — это период времени, в течение которого записи Job хранятся в базе данных. Обратите внимание, что все записи файла привязаны к заданию, которое сохраняло эти файлы. Записи File могут быть очищены, оставляя записи Job. В этом случае будет доступна информация о выполненных заданиях, но не о резервных копиях файлов. Обычно, когда запись Job очищается, все ее записи File также очищаются.

Период хранения тома — это минимум времени, в течение которого Том будет храниться до повторного использования. Бакула, как правило, никогда не перезапишет том, содержащий единственную резервную копию файла. В идеальных условиях Каталог сохранит записи для всех файлов, резервных копий для всех текущих томов. После того как том будет перезаписан, файлы, которые были скопированы на этом томе, автоматически удаляются из каталога. Однако, если существует очень большой пул томов или том никогда не перезаписывается, база данных каталога может стать огромной. Чтобы сохранить каталог в управляемом размере, информация о резервном копировании должна быть удалена из каталога после определенного периода хранения файлов. Bacula предоставляет механизмы для автоматического обрезки каталога в соответствии с определенными периодами хранения.

Сканирование (Scan) — Операция сканирования производит сканирование содержимого тома или серии томов. Эти тома с информацией о том, какие файлы они содержат, восстанавливаются в каталог Bacula. После восстановления информации в каталоге файлы, содержащиеся в этих томах, могут быть легко восстановлены. Эта функция особенно полезна, если определенные тома или задания превысили период хранения и были удалены или удалены из каталога. Сканирование данных из томов в каталог выполняется с помощью программы bscan. Для получения дополнительной информации см. Раздел bscan в программах Bacula Enterprise Utility.

Том (Volume) — это единица архива, обычно лента или файл с именованным диском, на котором Bacula хранит данные одного или нескольких заданий резервного копирования. На всех томах Bacula имеется метка программного обеспечения, записанная в том под названием Bacula, чтобы определить, какой объем действительно читается. (Обычно не должно быть путаницы с файлами на диске, но с лентами легко установить неправильную.)

Взаимодействие между службами Bacula

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

Стартуем

Будем считать что установить бакулу таки удалось.

Задачи (Jobs) и расписания (Schedules)

Чтобы настройка Бакулы была максимально гибкой директивы настройки разделены на несколько частей. Основные инструкции — определения задания (job). Задача резервного копирования обычно состоит из набора файлов (FileSet), клиента, расписания (может быть для нескольких уровней или периодов бэкапа), пула и дополнительных инструкций.

Если по-другому:
Набор файлов (FileSet) — что бекапить
Клиент — тот кто должен бэкапить.
Расписание (Shedule) определяет когда
Пул определяет куда (в какой том)

Обычно одна комбинация FileSet/Client будет иметь одно соответствующее задание. Директивый FileSet, Pool, Shedules можно смешивать и сопоставлять между заданиями. Таким образом может существовать несколько определений, резервирующих разные сервера, использующие одно и то же расписание, один и тот же набор файлов (бэкап одинаковых каталогов на разных машинах) и возможно, одни и те же пулы. В расписании можно указать какой тип бэкапа когда будет использоваться (например полный по понедельникам, инкрементальный в течении недели). Когда более одного задания используют одно и то же расписание приоритет задания определяет какое из них на самом деле выполняется первым.

Если заданий много — можно использовать определения заданий (JobDefs) в которых устанавливаются значения по умолчанию, который могут быть потом переопределены в других задачах, но при этом оставить основные параметры одинаковыми. Помимо набора файлов должно быть задание, которое бэкапит каталог (в смысле базу данных).

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

Пулы (Pools) тома (Volumes) и метки (Labels)

Том (Volume) — отдельная физическая лента (или файл), на который Бакула будет писать бэкапы. Пулы группируют тома, чтобы бэкап не ограничивался отдельной лентой (файлом). Следовательно, вместо указания явных томов в задании вы указываете пул и при необходимости Бакула выбирает следующий том монтирует его и т. д.

Параметры пула указываются в параметрах Директора (bacula-dir.conf). Добавление томов в пул обычно выполняется вручную, с помощью программы Console (команда Label). Или через Webmin тоже можно добавить.

Для каждого тома Бакула поддерживает большое количество каталожной информации, такой как дата/время первой и последней записей, количество файлов в томе, количество байт в томе, количество монтирований и т д.

Перед использованием тома Бакулой том должен быть помечен, чтобы Бакула мог понять что установлен правильный том. Обычно это делается командой label в бакульной консоли.

Вроде бы поморочено, но по факту довольно удобно и практично. Можно например создать пул для ежедневных дифференциальных или инкрементных бэкапов и отдельный для еженедельных полных резервных копий.

Файлы конфигурации Бакулы

файлы конфигурации находятся в /etc/bacula

по сути длф каждой программы комплекса — свой файл с расширением conf

Проверка файлов конфигурации

можно проверить конфиг-файлы на предмет синтаксических ошибок таким образом:

/usr/sbin/bacula-dir -t -c bacula-dir.conf
/usr/sbin/bacula-fd -t -c bacula-fd.conf
/usr/sbin/bacula-sd -t -c bacula-sd.conf
/usr/sbin/bconsole -t -c bconsole.conf
/usr/sbin/bwx-console -t -c bwx-console.conf
/usr/sbin/bat -t -c bat.conf

пути к файлам должны быть соответствующие.

Ну и, естественно, не факт что все программы установлены. Три последние не факт что и нужны.

настраиваем Директора

целиком и полностью все описано в официальной документации.

# nano /etc/bacula/bacula-dir.conf

файл конфигурации побит на разделы (ресурсы в терминологии Бакулы), собственно за них и беремся:

Director {                         # define myself
 Name = debian-dir
 DIRport = 9101                    # where we listen for UA connections
 QueryFile = "/etc/bacula/scripts/query.sql"
 WorkingDirectory = "/var/lib/bacula"
 PidDirectory = "/var/run/bacula"
 Maximum Concurrent Jobs = 1
 Password = "суперпупердлинныйпассворд"  # Console password
 Messages = Daemon
 DirAddress = 127.0.0.1
}

На самом деле в файле нам надо описать только ресурс catalog — описываем подключение к БД

Catalog {
  Name = MyCatalog
  dbname = "bacula"; dbuser = "bacula"; dbpassword = "пароль_бакулы_к_мускулу"
}

после этого Бакулой можно рулить через webmin.

Сначала лезем в настройки модуля —

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

Главное окно модуля:

отдельно следует обратить внимание на нижнюю часть главного окна модуля:

в строке Process Statuses про всех трех демонов должно быть написано Up

Настроим Storage Devices

по сути это место, куда сохраняются бэкапы.

Оригинальная документация

Откроем Storage Devices в модуле вебмина:

Изначально тут один SD сделан

Создаем еще один

Здесь прописывается:

1 Имя

2 Путь к папке бэкапов. Я сделал отдельную партицию на диске и подмонтировал ее через fstab. Владельцем папки должен быть пользователь bacula:bacula права  — 755

рассказываем нашему директору о его новом устройстве.
тыкаем сюда:

Один SD тут уже числится.

Добавляем еще один:

нужно прописать его имя и выбрать Storage Device — тот что на предыдущем шаге делали.

Создаем FileSet

то есть прописываем что будем бэкапить.

В изначальной установке Бакулы есть Full Set. Только вот не совсем он Фулл…

прописал корневой каталог и выбросил из него (Files and directories to skip) то что было плюс папку /home — ее надо будет как-то по-другому, потому как там виртмашина.  Ну или просто отдельно разобраться.

По дефолту есть еще файлсет «Catalog» —  вот это надо рассмотреть отдельно. Этот файл сет бэкапит каталог Бакулы в мускуле. Конкретно — указывает на дамп базы данных. Дамп появляется при запуске задания (Job) BackupCatalog и является чрезвычайно ценной вещью для работы Бакулы.

Создаем пул.

пусть у нас будет отдельный пул для еженедельных полных бэкапов

Лезем сюда:

исходные пулы уже присутствуют

создадим собственный

В менюшке нужно прописать имя пула, лейбл префикс —  без лейбла не будет работать.

Создаем задание (job)

Это здесь:

опять же что-то уже есть:

Делаем свое:

прописываем:

1 Имя — как-то ее надо обозначать

2 тип задания (Job type) — Бэкап (есть другие варианты)

3 Backup Level — фулл у нас в данном случае

4 File Set — что бэкапим. Файл сетов может быть много

5 Volume Pool — прописываем наш пул WeekFull

6 Destination storage device — тоже мы насоздавали.

и все такое прочее.

строчки command after/before job предназначены для запуска скриптов (в тч  и на клиенте.)

Жамкаем «создать»

В общем-то из меню Job уже можно тестировать как будет работать наш бэкап.

Создаем расписание

по дефолту прописано 2 расписания — Недельный цикл и «недельный цикл после бэкапа». Недельный после бэкапа бэкапит каталог Бакулы. менять здесь что-то смысла не имеет. По какому расписанию запускать какую жобу прописывается собственно в жобе.

Если ошибок при настройке не было при нажатии на Run Job в каждой конкретной задаче она должна запускаться на выполнение.

Если так оно и вышло — поздравляю, в первом приближении настроили.

Имеет смысл в FileSet установить уровень компрессии Gzip5 например.

И еще замечен такой баг: скрипт /etc/bacula/scripts/delete_catalog_backup, который должен выполняться после бэкапа каталога Бакулы после установки имеет неправильные права и соответственно не будет выполняться. Права нужно вручную выставить в 755.

Если что-то пошло не так…

1 проверить а можно ли вообще приконектится к директору, SD и FD. Можно из вебмина, можно из консоли Бакулы. Скажем мое решение переименовать директора было неудачным. В конфиге директора новое имя прописалось, но SD и FD  об этом догадаться никак не могли.

 

 

 

 

 

 

Дополнительно:

официальная документация

https://www.8host.com/blog/ustanovka-i-nastrojka-bacula-na-server-ubuntu-12-04/

https://ru.wikibooks.org/wiki/Bacula/%D0%91%D1%8B%D1%81%D1%82%D1%80%D1%8B%D0%B9_%D1%81%D1%82%D0%B0%D1%80%D1%82

http://help.ubuntu.ru/wiki/%D1%80%D1%83%D0%BA%D0%BE%D0%B2%D0%BE%D0%B4%D1%81%D1%82%D0%B2%D0%BE_%D0%BF%D0%BE_ubuntu_server/%D1%80%D0%B5%D0%B7%D0%B5%D1%80%D0%B2%D0%BD%D0%BE%D0%B5_%D0%BA%D0%BE%D0%BF%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5/bacula

https://www.ibm.com/developerworks/ru/library/l-Backup_4/

http://www.umgum.com/bacula-mysql-backup

https://habrahabr.ru/post/135291/

http://samag.ru/archive/article/1563

 

Хороший мануал на русском

Добавить комментарий