Столкнулся с необходимостью сделать бэкап со своего домашнего мини-сервера, на котором у меня много что развернуто в том числе и этот блог(UPD: уже нет). После нескольких часов гугления я остановился на bacula. В интернете море инструкций на эту тему, можно довольно легко развернуть бэкап-систему. Чтобы структурировать полученный опыт, я решил оставить здесь небольшой how-to.
Задача: есть сервер на debian и домашний компьютер на os Luna (ubuntu). Раз в день вся ценная информация с сервера должна сохраняться на домашний компьютер. Разумеется, во время бэкапа домашний компьютер должен быть включен, поэтому время бэкапа надо выбирать подходящее, у меня это 22:00.
Во всех статьях про bacula можно узнать, что bacula состоит из нескольких независимых модулей, которые могут быть установлены на разные машины. Вот что об этом написано в википедии:
На сервере:
sudo apt-get install bacula-server
Если предложит настроить mysql, то соглашайтесь. (mysql-server должен быть установлен на сервере)
На клиенте:
sudo apt-get install bacula-client
Затем переходим к настройке. Клиент настроить проще всего, т.к. на нем нам нужен только file daemon. Нужно открыть для редактирования файл /etc/bacula/bacula-fd.conf:
В нем нужно настроить 3 элемента:
Я хочу заметить, что File Daemon ничего не знает о том, что будет бэкапиться. Он всего-лишь выполняет указания директора.
Теперь перейдем к настройке сервера. Начнем с простого. Настройка хранилища.
Здесь уже посложнее, чем с fd демоном, нужно настроить 4 вещи:
Теперь переходим к настройке главного. Директор. Для этого нужно открыть конфигурационный файл /etc/bacula/bacula-dir.conf
Здесь настроек много, кратко перечислю что о чем:
Director — описание директора, здесь задается имя и пароль директора, которые указывались во всех других конфигах.
JobDefs — это описание группы Jobов. Группы нужны чтобы выделять общие параметры в нескольких Jobах Подробнее о параметрах написал в комментариях.
Job — непосредственно задание для бэкапа. Как видно, почти вся конфигурация находится в предыдущем тэге.
FileSet — описывает какие именно файлы на машине, на которой установлен File Daemon, надо бэкапить.
Schedule — как часто выполнять задание. Бэкап может быть полным, инкрементальным или дифференциальным. Разница между ними легко гуглится.
Client — описание клиента (file Daemon), которого мы настраивали в первую очередь.
Storage — описание хранилища (storage daemon). Его мы настраивали во вторую очередь.
Catalog — параметры подключения к базе данных. База данных нужна директору для корректной работы.
Messages — что делать с сообщениями (отправлять email, кидать в логи, в консоль)
Pool — здесь описывается пул томов бэкапа. Сколько хранить, сколько копий одновременно иметь и т.д.
Console — Информация о консоли. (о ней ниже)
Как видно, настройка у директора очень гибкая, можно настроить все под свои задачи. Как и в остальных конфигах почти все будет уже заполнено, также будет много заккоментаренных шаблонов для различных заданий.
И еще осталась консоль. Из нее удобно запускать задания и в случае чего восстанавливать файлы. Если вы дочитали до этого места, то настройку консоли можно оставить без комментария:
После того, как все установлено запускаем консоль
sudo bconsole
А в ней запускаем задание
*run
90% что-то пойдет не так. Придется почитать логи (сообщения), понять где ошибка, исправить и вновь запустить задание. Уверен, все получится!
Удачи!
Задача: есть сервер на debian и домашний компьютер на os Luna (ubuntu). Раз в день вся ценная информация с сервера должна сохраняться на домашний компьютер. Разумеется, во время бэкапа домашний компьютер должен быть включен, поэтому время бэкапа надо выбирать подходящее, у меня это 22:00.
Во всех статьях про bacula можно узнать, что bacula состоит из нескольких независимых модулей, которые могут быть установлены на разные машины. Вот что об этом написано в википедии:
- 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 для хранения метаданных.
На сервере:
sudo apt-get install bacula-server
Если предложит настроить mysql, то соглашайтесь. (mysql-server должен быть установлен на сервере)
На клиенте:
sudo apt-get install bacula-client
Затем переходим к настройке. Клиент настроить проще всего, т.к. на нем нам нужен только file daemon. Нужно открыть для редактирования файл /etc/bacula/bacula-fd.conf:
Director { Name = main-pc-dir Password = "secret" } FileDaemon { # this is me Name = dserver-fd FDport = 9102 WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Maximum Concurrent Jobs = 20 FDAddress = 192.168.1.57 } Messages { Name = Standard director = main-pc-dir = all, !skipped, !restored }
В нем нужно настроить 3 элемента:
- Указать кто будет директором, кто будет всем управлять. (Имя директора и пароль директора)
- Описать самого себя. Это имя fd-демона, его адрес, порт и другие параметры.
- Что делать с информационными сообщениями. (с ними можно многое что делать, но мы их будем отправлять директору)
Я хочу заметить, что File Daemon ничего не знает о том, что будет бэкапиться. Он всего-лишь выполняет указания директора.
Теперь перейдем к настройке сервера. Начнем с простого. Настройка хранилища.
Director { Name = main-pc-dir Password = "secret" } Storage { # definition of myself Name = main-pc-sd SDPort = 9103 # Director's port WorkingDirectory = "/var/lib/bacula" Pid Directory = "/var/run/bacula" Maximum Concurrent Jobs = 20 SDAddress = 192.168.1.54 } Messages { Name = Standard director = main-pc-dir = all } Device { Name = FileStorage Media Type = File Archive Device = /var/backup LabelMedia = yes; # lets Bacula label unlabeled media Random Access = Yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; }
Здесь уже посложнее, чем с fd демоном, нужно настроить 4 вещи:
- Указать кто будет директором, кто будет всем управлять. (Имя директора и пароль директора)
- Описать самого себя. Это имя sd-демона, его адрес, порт и другие параметры.
- Что делать с информационными сообщениями. (тоже отправляем директору)
- Указать, где хранить информацию. Это может быть каталог, раздел, внешний носитель. У меня инфа храниться в каталоге /var/backup.
Теперь переходим к настройке главного. Директор. Для этого нужно открыть конфигурационный файл /etc/bacula/bacula-dir.conf
Director { # define myself Name = main-pc-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 = "secret" # Console password Messages = Daemon DirAddress = 192.168.1.44 } JobDefs { Name = "DefaultJob" Type = Backup Level = Full Client = dserver-fd #см. ниже тэг Client FileSet = "Full Set" Schedule = "WeeklyCycle" #как часто выполнять задание Storage = File #см. ниже тэг Storage. Messages = Standard Pool = Default Priority = 10 Write Bootstrap = "/var/lib/bacula/%c.bsr" } Job { Name = "BackupClient1" JobDefs = "DefaultJob" } FileSet { Name = "Full Set" Include { Options { signature = MD5 } File = /etc #Вот эти директории будут бэкапится File = /var/www File = /var/webapps } } Schedule { Name = "WeeklyCycle" Run = Full 1st sun at 22:00 Run = Differential 2nd-5th sun at 22:00 Run = Incremental mon-sat at 22:00 } Client { Name = dserver-fd Address = 192.168.1.57 FDPort = 9102 Catalog = MyCatalog Password = "secret" # password for FileDaemon File Retention = 30 days # 30 days Job Retention = 6 months # six months AutoPrune = yes # Prune expired Jobs/Files } Storage { Name = File Address = 192.168.1.54 # N.B. Use a fully qualified name here SDPort = 9103 Password = "secret" Device = FileStorage Media Type = File } Catalog { Name = MyCatalog dbname = "bacula"; DB Address = ""; dbuser = "bacula"; dbpassword = "passwordForBacula" } 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 console = all, !skipped, !saved append = "/var/lib/bacula/log" = all, !skipped catalog = all } Pool { Name = Default Pool Type = Backup Recycle = yes # Bacula can automatically recycle Volumes AutoPrune = yes # Prune expired volumes Volume Retention = 365 days # one year Label Format = "MonthFull-${Month}_${Year}" } Console { Name = main-pc-mon Password = "secret" CommandACL = status, .status }
Здесь настроек много, кратко перечислю что о чем:
Director — описание директора, здесь задается имя и пароль директора, которые указывались во всех других конфигах.
JobDefs — это описание группы Jobов. Группы нужны чтобы выделять общие параметры в нескольких Jobах Подробнее о параметрах написал в комментариях.
Job — непосредственно задание для бэкапа. Как видно, почти вся конфигурация находится в предыдущем тэге.
FileSet — описывает какие именно файлы на машине, на которой установлен File Daemon, надо бэкапить.
Schedule — как часто выполнять задание. Бэкап может быть полным, инкрементальным или дифференциальным. Разница между ними легко гуглится.
Client — описание клиента (file Daemon), которого мы настраивали в первую очередь.
Storage — описание хранилища (storage daemon). Его мы настраивали во вторую очередь.
Catalog — параметры подключения к базе данных. База данных нужна директору для корректной работы.
Messages — что делать с сообщениями (отправлять email, кидать в логи, в консоль)
Pool — здесь описывается пул томов бэкапа. Сколько хранить, сколько копий одновременно иметь и т.д.
Console — Информация о консоли. (о ней ниже)
Как видно, настройка у директора очень гибкая, можно настроить все под свои задачи. Как и в остальных конфигах почти все будет уже заполнено, также будет много заккоментаренных шаблонов для различных заданий.
И еще осталась консоль. Из нее удобно запускать задания и в случае чего восстанавливать файлы. Если вы дочитали до этого места, то настройку консоли можно оставить без комментария:
Director { Name = main-pc-dir DIRport = 9101 address = 192.168.1.44 Password = "secret" }
После того, как все установлено запускаем консоль
sudo bconsole
А в ней запускаем задание
*run
90% что-то пойдет не так. Придется почитать логи (сообщения), понять где ошибка, исправить и вновь запустить задание. Уверен, все получится!
Удачи!
Комментариев нет :
Отправить комментарий