Т.к. bacula штука здоровая, то будет несколько частей.
Что такое bacula - это очень мощный, открытый менеджер бэкапов для гигантского кол-ва платформ. Про платформы не шучу, их реально много.
Но почему я выбрал именно эту "чудо" систему?
Дело в том, что парк машин у меня хоть и не очень солидный, но на второй десяток уже идет. И захотелось под это всё, хоть как-то, свести бэкапы в единую систему. И встал вопрос, что выбрать - ну а раз пишу про bacula, то выбор был сделан в пользу этой системы.
Сразу предупреждаю, что bacula - жуткий монстр, его конфиг удручает с первых минут, и именно по этому, надо сначала понять как это дело работает. Иначе...
А работает bacula просто и лаконично. Весь сервис делится на три части:
За работу с хранилищами отвечает сервис bacula-sd. Зачем отдельный сервис? Дело в том, что хранилища бывают разными: на хардах, на лентах, на оптических дисках, да хоть на флешках. А бывают ещё и библиотеки для лент и оптики. Вот ко всему этому добру данный сервис и дает вам доступ. Причем эти сервисы могут быть раскинуты по разным физическим машинам, что позволяет делать хоть гео-распределенное хранилище. За сервисами хранилищ следит сервис управления, через единый интерфейс взаимодействия. Вот и получается, что можно заготовить такие схемы хранения, что хватит практически на любого изысканного гурмана.
Сервис клиентов.
Собственно сервис, по средством которого будет осуществлено резервирование данных. Вы просто устанавливаете клиент и задаете ему пароль. На клиенте не надо указывать, что и когда вы хотите делать. Все ваши действия вы будете указывать на стороне управляющего сервиса, кроме отдельных специфичных скриптов. Сами понимаете, что скрипты под windows в linux среде отлаживать немного ... неудобно. А клиентские сервисы имеются под множество платформ. Т.е. на стороне клиента надо делать минимум действий. Удобно администратору с гигантским парком машин - минимум возни с клиентской частью.
Сервис управления.
Воистину монстр. Базовый конфиг занимает около 300 строк. Реальный ужас, а после пару клиентов и сложных комбинаций заданий, вообще способен быстро вырасти свыше 1000 строк. Т.ч. первое действие, которое надо сделать, это разбить по отдельным файлам разделы из файла bacula-dir.conf. В конфиге bacula подгрузка данных делается через директиву @/path/to/file.name.
Как сделал я? Я разделил конфиги на следущие секции:
Да собственно теперь можно сразу вынести листинг
Что такое bacula - это очень мощный, открытый менеджер бэкапов для гигантского кол-ва платформ. Про платформы не шучу, их реально много.
Но почему я выбрал именно эту "чудо" систему?
Дело в том, что парк машин у меня хоть и не очень солидный, но на второй десяток уже идет. И захотелось под это всё, хоть как-то, свести бэкапы в единую систему. И встал вопрос, что выбрать - ну а раз пишу про bacula, то выбор был сделан в пользу этой системы.
Сразу предупреждаю, что bacula - жуткий монстр, его конфиг удручает с первых минут, и именно по этому, надо сначала понять как это дело работает. Иначе...
А работает bacula просто и лаконично. Весь сервис делится на три части:
- Управление
- Клиенты
- Хранилища
За работу с хранилищами отвечает сервис bacula-sd. Зачем отдельный сервис? Дело в том, что хранилища бывают разными: на хардах, на лентах, на оптических дисках, да хоть на флешках. А бывают ещё и библиотеки для лент и оптики. Вот ко всему этому добру данный сервис и дает вам доступ. Причем эти сервисы могут быть раскинуты по разным физическим машинам, что позволяет делать хоть гео-распределенное хранилище. За сервисами хранилищ следит сервис управления, через единый интерфейс взаимодействия. Вот и получается, что можно заготовить такие схемы хранения, что хватит практически на любого изысканного гурмана.
Сервис клиентов.
Собственно сервис, по средством которого будет осуществлено резервирование данных. Вы просто устанавливаете клиент и задаете ему пароль. На клиенте не надо указывать, что и когда вы хотите делать. Все ваши действия вы будете указывать на стороне управляющего сервиса, кроме отдельных специфичных скриптов. Сами понимаете, что скрипты под windows в linux среде отлаживать немного ... неудобно. А клиентские сервисы имеются под множество платформ. Т.е. на стороне клиента надо делать минимум действий. Удобно администратору с гигантским парком машин - минимум возни с клиентской частью.
Сервис управления.
Воистину монстр. Базовый конфиг занимает около 300 строк. Реальный ужас, а после пару клиентов и сложных комбинаций заданий, вообще способен быстро вырасти свыше 1000 строк. Т.ч. первое действие, которое надо сделать, это разбить по отдельным файлам разделы из файла bacula-dir.conf. В конфиге bacula подгрузка данных делается через директиву @/path/to/file.name.
Как сделал я? Я разделил конфиги на следущие секции:
- jobs,
- clients,
- filesets,
- pools,
- schedulers,
- storages
Да собственно теперь можно сразу вынести листинг
Director { Name = backup-dir DIRport = 9101 QueryFile = "/etc/bacula/scripts/query.sql" WorkingDirectory = "/var/lib/bacula" PidDirectory = "/var/run/bacula" Maximum Concurrent Jobs = 1 # можно запускать только одно задание Password = "my_director pass" # Console password Messages = Daemon DirAddresses = { ip = { addr = some.localnetwork; port = 9101; } ip = { addr = some.internet.host; port = 9101; } ip = { addr = 127.0.0.1; port = 9101; } } # Сделано так, потому как есть ещё пару сетевых интерфейсов куда светить не надо } Catalog { Name = BackupCatalog dbname = "bacula";# dbuser = "bacula"; dbpassword = "" нету так как sqlite } # Консоль - это четвертая часть в бакуле, но так как настройки большой не требует # то я её и не описывал. Единственное, что в конфиге консоли пароль должен совпадать Console { Name = backup-mon Password = "my_console_pass" # Console password CommandACL = status, .status } # Здесь системные сообщения. В общем это отдельная песня. Пока лучше оставить так, как есть Messages { Name = Standard mailcommand = "/usr/lib/bacula/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -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 = root@localhost = all, !skipped operator = root@localhost = mount catalog = all console = all, !skipped, !saved append = "/var/lib/bacula/log" = all, !skipped } 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 } # Импортирование конфига для различных секций @/etc/bacula/bacula-dir-jobdefs.conf @/etc/bacula/bacula-dir-job.conf @/etc/bacula/bacula-dir-fileset.conf @/etc/bacula/bacula-dir-schedule.conf @/etc/bacula/bacula-dir-client.conf @/etc/bacula/bacula-dir-storage.conf @/etc/bacula/bacula-dir-pool.confВ следующей части я объясню как работает связка.