Столкнулся с необходимостью сделать бэкап со своего домашнего мини-сервера, на котором у меня много что развернуто в том числе и этот блог(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% что-то пойдет не так. Придется почитать логи (сообщения), понять где ошибка, исправить и вновь запустить задание. Уверен, все получится!
Удачи!
Комментариев нет :
Отправить комментарий