Наличие актуальной резервной копии для любого пользователя (в особенности, бизнеса) крайне важно, поскольку никто не застрахован от неприятных случаев, связанных с выходом из строя носителей, утери информации, случайного удаления и т.д. В таких ситуациях бэкап становится единственным средством восстановления ваших бесценных данных, и потому способен избавить вас от множества неприятностей, потраченного времени, испорченных нервов и нерационально израсходованных денег.
Мы выбрали популярное ПО Bareos в качестве системы резервного копирования, поскольку она:
- является OpenSource-решением;
- активно развивается;
- имеет множество полезных функций;
- может расширять свой функционал благодаря плагинам.
Описание задачи
Для примера возьмем три сервера: Bareos, BitrixVM, Windows Server 2012 R2. В нашем случае все они находятся в пределах одной сети; в то же время Bareos позволяет выполнять резервное копирование и тогда, когда машина находится за пределами сети.
Bareos — 172.16.10.10 BitrixVM — 172.16.10.11 Windows Server — 172.16.10.12
Для сервера с Bareos будем использовать CentOS 7. Происходит обычная установка:
# yum install -y bareos-client bareos-database-tools bareos-filedaemon bareos-database-mysql bareos bareos-bconsole bareos-database-common bareos-storage bareos-director bareos-common
В качестве базы данных будет использоваться PostgreSQL. Установка происходит так же просто:
# yum install -y postgresql-server postgresql-contrib
При установке Bareos в /etc/bareos имеем следующий список файлов и папок (за исключением директории ssl, к ней перейдем чуть позже):
/bareos-dir.d
/bareos-sd.d
/ssl
bareos-dir.conf
bareos-fd.conf
bareos-sd.conf
bconsole.conf
.rndpwd
После установки в директории /usr/lib/bareos/scripts/ появятся подготовленные скрипты для работы с Bareos. Используя их, выполним предварительную настройку базы данных (создадим базу, таблицы, и права):
su postgres -c /usr/lib/bareos/scripts/create_bareos_database
su postgres -c /usr/lib/bareos/scripts/make_bareos_tables
su postgres -c /usr/lib/bareos/scripts/grant_bareos_privileges
Важный нюанс: имена наших машин должны резолвиться; если же нет, то добавим соответствующие строки в /etc/hosts:
172.16.10.10 bareos-server
172.16.10.10 bareos-fd
172.16.10.11 bitrixvm
172.16.10.12 win-fd
bareos-server — сам сервер, bareos-fd — также будем делать бэкап самого сервера, т.е. в то же время, будет выступать как клиент, далее в конфигурации это будет видно, bitrixvm — клиент c BitrixVM, win-fd — клиент с Windows Server 2012 R2.
Настройку серверной части для Bareos (а именно – директора) необходимо выполнить в файле bareos-dir.conf. Директор отвечает за все выполняемые операции.
Основные директивы:
**Director** — описание самого директора;
**Storage** — устройство, на которое пишем бэкапы;
**Catalog** — содержит информацию по выполненным Job, сохраненным файлам, клиентам, статусам;
**Messages** — какие сообщения будут собраны и как их доставлять;
**Console** — настройка консоли для управления директором;
**Client** — описание клиента, с которого будут сниматься резервные копии;
**Pool** — позволяет управлять Volume, куда будут писаться данные для разных типов бэкапа (Full, Incremental, Differential), ограничить сроки хранения Volume, размеры;
**FileSet** — определяем, какие данные подлежат резервному копированию, и дополнительные атрибуты;
**Schedule** — расписание;
**Job** — описание задачи по резервному копированию.
Схема взаимодействия между службами выглядит так (из официальной документации Bareos):
Содержимое файла bareos-dir.conf:
Director {
#Обязательный параметр имя директора
Name = bareos-server
# Обязательный параметр для файлов запросов
QueryFile = «/usr/lib/bareos/scripts/query.sql»
# Количество одновременно выполняемых Job
Maximum Concurrent Jobs = 10
# Пароль (зачастую используется 20-40 символов, для теста ограничимся 9 знаками)
Password = «zcx@#$BGj»
# Указание, какие оповещения использовать (директива Message описывается далее)
Messages = Standart
# TLS-шифрование. Будет описано далее.
# TLS включено
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = yes
#Разрешенные CN
TLS Allowed CN = «bareos-server»
TLS Allowed CN = «bitrixvm»
TLS Allowed CN = «win-fd»
# Расположение CA-сертификата
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
# Расположение сертификат
TLS Certificate = /etc/bareos/ssl/bareos-server.cert.pem
# Расположение ключа к сертификату
TLS Key = /etc/bareos/ssl/bareos-server.nopass.key.pem
TLS DH File = /etc/bareos/ssl/dh1024.pem
}
Storage {
Name = bareos-server-sd
# Можно указать как по IP, так и по имени, для корректной работы TLS важно указывать по #имени
Address = bareos-server
Password = «zcx@#$BGj»
# Задается имя для устройства, где будут храниться данные. Параметры устройства установлены в файле bareos-sd.conf
Device = bareos-sd
Media Type = File
Port = 9103
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
TLS Certificate = /etc/bareos/ssl/bareos-server.cert.pem
TLS Key = /etc/bareos/ssl/bareos-server.nopass.key.pem
}
Catalog {
#Задаются все параметры для подключения к БД
Name = bareos-server
dbdriver = «postgresql»
dbname = «bareos»
dbuser = «bareos»
dbpassword = «»
}
Messages {
# Описываются типы сообщений, которые должны быть отправлены и записаны в лог
Name = Standart
mail = root@localhost = all, !skipped, !audit
console = all, !skipped, !saved, !audit
append = «/var/log/bareos/bareos.log» = all, !skipped, !audit
append = «/var/log/bareos/bareos-audit.log» = audit
}
Client {
# Имя клиента для бэкапа
Name = bareos-fd
# Название каталога
Catalog = bareos-server
Enabled = yes
# Адрес задаем именем
Address = bareos-server
Password = «zcx@#$BGj»
Port = 9102
# Параметры TLS будут описаны позже
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
TLS Certificate = /etc/bareos/ssl/bareos-server.cert.pem
TLS Key = /etc/bareos/ssl/bareos-server.nopass.key.pem
}
Pool {
# Имя пула для полного бэкапа
Name = bareos-pool -Full
# Автоматически дописывает к файлу с бэкапом метку вида «bareos-client-Full-» + номер
#Volume
#Например итоговое на
вание Volume после очередного бэкапа будет иметь вид bareos-client-# Full-0009
Label Format = «bareos-client-Full-»
# Тип пула. По официальной документации BareOS на данный момент осуществляется #только тип Backup
Pool Type = Backup
# Volume для полного бэкапа храниться 3 месяца
Volume Retention = 3 months
# после чего каталог очищается от устаревших данных
AutoPrune = yes
# Volume перезаписывается
Recycle = yes
}
Pool {
# Имя пула для инкрементального бэкапа
Name = bareos-pool-Incremental
Pool Type = Backup
Recycle = yes
Auto Prune = yes
Volume Retention = 10 days
Label Format = «bareos-client-Incremental-»
}
Pool {
# Имя пула для дифференциального бэкапа
Name = bareos-pool-Differential
Pool Type = Backup
Recycle = yes
Auto Prune = yes
Volume Retention = 11 days
Label Format = «bareos-client-Differential-»
}
FileSet {
# Задаем имя для набора файлов
Name = bareos-fileset
# В Include указажем какие файлы будут сохраняться. В данном случае папка /etc
Include {
File = «/etc»
}
}
Schedule {
#Имя расписания
Name = «MonthlyCycle»
# 1 раз в неделю выполняется полный бэкап
Run = Level = Full mon at 2:00
# В течении дня 5 инкрементальных бэкапов каждый час
Run = Level= Incremental hourly at 13:00
Run = Level = Incremental hourly at 14:00
Run = Level = Incremental hourly at 15:00
Run = Level = Incremental hourly at 16:00
Run = Level = Incremental hourly at 17:00
}
Job {
# Название для задачи
Name = Job-Full
# Его тип. Может быть Backup или Restore
Type = Backup
# Уровень бэкапа. Full, Differential или Incremental
Level = Incremental
# Для какого клиента выполняется Job
Client = bareos-fd
# Набор файлов
FileSet = bareos-fileset
# Расписание
Schedule = «MonthlyCycle»
# Название используемого Storage
Storage = bareos-server-sd
# Оповещения
Messages = Standart
# Используемый пул
Pool = bareos-pool -Full
Full Backup Pool = bareos-pool -Full
Differential Backup Pool = bareos-pool-Differential
Incremental Backup Pool = bareos-pool-Incremental
}
Job {
Name = Job-Full-restore
Type = Restore
Client = bareos-fd
FileSet = «bareos-fileset»
Storage = bareos-server-sd
Pool = bareos-pool -Full
Messages = Standart
# Указание пути, куда при восстановлении попадут все файлы
Where = /tmp
}