Бэкап сервера с помощью OpenSource Bareos

Выделенный сервер

Аренда сервера для бизнеса

Выделенные серверы с быстрым подключением и поддержкой

Арендовать сервер в Германии

Бэкап сервера

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

Мы выбрали популярное ПО 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
}
# Добавляем в качестве отдельных файлов конфигурации двух остальных клиентов.
@/etc/bareos/bareos-dir.d/win.conf
@/etc/bareos/bareos-dir.d/bitrixvm.conf

Важно чтобы было соответствие между конфигурациями: Бэкап сервера

Далее настроим Storage в bareos-sd.conf:

Storage {
# Имя
Name = bareos-server-sd
# Максимальное количество одновременно выполняющихся Job
Maximum Concurrent Jobs = 20
# Адрес, указываем по имени
SDAddress = bareos-server
SDPort = 9103
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = no
TLS Allowed CN = «bareos-server»
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
}

Director {
# Описываем параметры директора, который может подключаться к Storage
Name = bareos-server
Password = «zcx@#$BGj»
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = yes
TLS Allowed CN = «bareos-server»
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
}

Device {
# Описываем само устройство для хранения
Name = bareos-sd
Media Type = File
# Путь к устройству
Archive Device = /opt/backup
# Разрешить автоматически размечать тома
LabelMedia = yes
# Для одновременного доступа при одновременном выполнении нескольких задач
Random Access = yes
# Автоматически монтировать устройство
AutomaticMount = yes
RemovableMedia = no
AlwaysOpen = no
}

Messages {
Name = Standard
director = bareos-server = all
}

Настройка клиента bareos-fd.conf:

Director {
# Параметры для подключения директора
Name = bareos-server
Password = «zcx@#$BGj»
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = yes
TLS Allowed CN = «bareos-server»
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
}

FileDaemon {
# FileDaemon синоним Client
Name = bareos-fd
Maximum Concurrent Jobs = 20
# Отключается совместимость с Bacula. В таком случае включаются все возможности #bareos, которые включены по умолчанию.
Compatible = no
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

}

Messages {
Name = Standard
director = bareos-server = all
}

После всех основных настроек нужно перезапустить службы bareos:

systemctl restart bareos-dir
systemctl restart bareos-sd
systemctl restart bareos-fd

В случае возникновения ошибок состояние смотрим командой:

systemctl status bareos-dir.service -l

Перейдем к установке плагина bareos клиента для Windows. Можно скачать тут.

Установка плагина проходит так же просто. Из списка предлагаемых компонентов выбираем только два указанных на скриншоте: далее задаем имя для клиента, указываем параметры уже имеющегося директора: Бэкап сервера

Бэкап сервера

Прописываем такие данные:

Client Name — win-fd
Director Name — bareos-server
Password — zcx@#$BGj
Networks Address — bareos-server

Введенные настройки всегда можно подправить, файл конфигурации по умолчанию лежит в «C:\Program Data\Bareos\bareos-fd.conf».

В файле hosts также указываем IP для сервера BareOS, чтобы имя резолвилось. Со стороны сервера (bareos-server) конфиг для клиента (win-fd) выглядит следующим образом и находиться по пути /etc/bareos/bareos-dir.d/win.conf:

Client {
Name = win-fd
Address = win-fd
Password = «zcx@#$BGj»
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 = win-bareos-pool-Full
Auto Prune = yes
Label Format = «bareos-client-Full-»
Pool Type = Backup
AutoPrune = yes
Recycle = yes
Volume Retention = 3 months
}

Pool {
Name = win-bareos-pool-Differential
Pool Type = Backup
AutoPrune = yes
Recycle = yes
Volume Retention = 11 days
Label Format = «win-bareos-client-Differential-»
}

Pool {
Name = win-bareos-pool-Incremental
Pool Type = Backup
AutoPrune = yes
Recycle = yes
Volume Retention = 10 days
Label Format = «win-bareos-client-Incremental-»
}

FileSet {
Name = bareos-fileset-win
Include {
File = «C:\\Users\\»
}
}

Job {
Name = Job-win-Full
Type = Backup
Level = Incremental
Client = win-fd
FileSet = bareos-fileset-win
Schedule = «MonthlyCycle»
Storage = bareos-server-sd
Messages = Standart
Pool = win-bareos-pool-Incremental
Full Backup Pool = win-bareos-pool-Full
Differential Backup Pool = win-bareos-pool-Differential
Incremental Backup Pool = bareos-pool-Incremental
}

Job {
Name = Job-win-Full-restore
Type = Restore
Client = win-fd
FileSet = «bareos-fileset-win»
Storage = bareos-server-sd
Pool = win-bareos-pool-Full
Messages = Standart
Where = «C:/tmp»
}

Из директивы FileSet видим, что для задачи Job-win-Full копируем папку пользователей C:\Users и в задаче Job-win-Full-restore восстанавливаем ее в папку при необходимости C:\tmp.

Остался еще один клиент (bitrixvm), для которого нужно выполнять копирование корневой директории и, в отдельной задаче, – копирование базы данных mysql.

Перейдем на машину bitrixvm и выполним установку клиента: yum install -y bareos-client bareos-common

Перейдем в каталог /etc/bareos

/bareos-dir.d
/bareos-fd.d
/bconsole.conf
/ssl
.rndpwd
tray-monitor.d

Для настройки клиента перейдем в директорию /bareos-fd.d

/client
/director
/messages

По умолчанию после установки конфигурация разбросана на три показанные выше директории, поэтому для дальнейшего удобства закоммитим частичные конфигурации в директориях director и messages и выполним все настройки в /client/myself.conf

Client {
Name = bitrixvm
Maximum Concurrent Jobs = 20
TLS Enable = yes
TLS Require = yes
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
TLS Certificate = /etc/bareos/ssl/bitrixvm.cert.pem
TLS Key = /etc/bareos/ssl/bitrixvm.nopass.key.pem
compatible = no
}

Director {
Name = bareos-server
Password = «zcx@#$BGj»
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = yes
TLS Allowed CN = «bareos-server»
TLS CA Certificate File = /etc/bareos/ssl/ca-chain.cert.pem
TLS Certificate = /etc/bareos/ssl/bitrixvm.cert.pem
TLS Key = /etc/bareos/ssl/bitrixvm.nopass.key.pem
TLS DH File = /etc/bareos/ssl/dh1024.pem
}

Messages {
Name = Standard
Director = bareos-server = all, !skipped, !restored
Description = «Send relevant messages to the Director.»
}

Вносим параметры и перезапускаем службу:

**/etc/init.d/bareos-fd restart**

Прописываем в hosts адрес для bareos-server

Со стороны сервера (bareos-server) конфигурация для клиента (bitrixvm) выглядит следующим образом и находится в /etc/bareos/bareos-dir.d/bitrixvm.conf:

Client {
Name = bitrixvm
Address = bitrixvm
Password = «zcx@#$BGj»
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 = bitrixvm-bareos-pool-Full
Label Format = «bitrixvm-bareos-client-Full-»
Pool Type = Backup
AutoPrune = yes
Recycle = yes
Volume Retention = 3 months
}

Pool {
Name = bitrixvm-bareos-pool-Differential
Pool Type = Backup
Label Format = «bitrixvm-bareos-client-Differential-»
AutoPrune = yes
Recycle = yes
Select Job resource (1-6): = 11 days
}

Pool {
Name = bitrixvm-bareos-pool-Incremental
Pool Type = Backup
Label Format = «bitrixvm-bareos-client-Incremental-»
AutoPrune = yes
Recycle = yes
Volume Retention = 10 days
}

Job {
Name = Job-bitrixvm-mysql
Type = Backup
Level = Full
Client = bitrixvm
FileSet = bareos-fileset-bitrixvm-mysql
Schedule = «MonthlyCycle»
Storage = bareos-server-sd
Messages = Standart
Pool = bitrixvm-bareos-pool-Incremental
Full Backup Pool = bitrixvm-bareos-pool-Full
Differential Backup Pool = bitrixvm-bareos-pool-Differential
Incremental Backup Pool = bitrixvm-bareos-pool-Incremental

RunScript {
# Выполним скрипт, описанный в этой секции до выполнения бэкапа
RunsWhen = Before
# Запускать скрипт, если задача (Job) не будет выполнена успешно
RunsOnFailure = Yes
RunsOnClient = Yes
#
#Сама команда для скрипта
Command = «sh -c ‘mysqldump -uroot -ppassword —opt —all-databases > /tmp/dump.sql’»
}
}

Job {
Name = Job-bitrixvm-Full
Type = Backup
Level = Full
Client = bitrixvm
FileSet = bareos-fileset-bitrixvm
Schedule = «MonthlyCycle»
Storage = bareos-server-sd
Messages = Standart
Pool = bitrixvm-bareos-pool-Incremental
Full Backup Pool = bitrixvm-bareos-pool-Full
Differential Backup Pool = bitrixvm-bareos-pool-Differential
Incremental Backup Pool = bitrixvm-bareos-pool-Incremental
}

FileSet {
Name = bareos-fileset-bitrixvm
Include {
Options {
compression = GZIP
}
File = «/»
}
}

FileSet {
Name = bareos-fileset-bitrixvm-mysql
Include {
Options {
# Ставим тип сжатия
compression = GZIP
signature = MD5
}
File = «/tmp/dump.sql»
}
}

Job {
Name = Job-bitrixvm-mysql-restore
Type = Restore
Client = bitrixvm
FileSet = «bareos-fileset-bitrixvm-mysql»
Storage = bareos-server-sd
Pool = bitrixvm-bareos-pool-Full
Messages = Standart
Where = /tmp
}

Job {
Name = Job-bitrixvm-Full-restore
Type = Restore
Client = bitrixvm
FileSet = «bareos-fileset-bitrixvm»
Storage = bareos-server-sd
Pool = bitrixvm-bareos-pool-Full
Messages = Standart
Where = /tmp
}

В секции RunScript параметра Command мы запускаем команду mysqldump, передав все необходимые параметры «mysqldump -uroot -ppassword —opt —all-databases > /tmp/dump.sql».

Сохраненный файл dump.sql будет после бэкапирован, как указано для FileSet с названием «bareos-fileset-bitrixvm-mysql».

Для шифрования передачи данных Bareos использует протокол TLS. Для каждого клиента и для директора у нас должны быть CA-сертификат, сертификат и ключ. Будем использовать самоподписанные сертификаты, все это можно сделать через openssl.

Перейдем по пути конфигурационного файла openssl /etc/pki/tls/openssl.cnf

Генерируем CA-сертификат:

#openssl req -config openssl.cnf -new -x509 -extensions v3_ca -keyout private/myca.key -out certs/myca.crt

После ввода пароля и остальных данных получим два файла:

/etc/pki/CA/private/myca.key
/etc/pki/CA/certs/myca.crt

Подправим/проверим файл настроек openssl.cnf , чтобы были верно указаны пути к сертификатам.

Также нужно создать файлы index.txt и serial в папке /etc/pki/CA:

touch /etc/pki/CA/index.txt

В файл serial сразу заносим значение «01», в файле будет содержаться следующий номер для следующего сертификата:

echo ’01’ > /etc/pki/CA/serial

Содержимое openssl.cnf:

dir = /etc/pki/CA
certs = $dir/certs
crl_dir = $dir/crl
database = $dir/index.txt
#unique_subject = no

new_certs_dir = $dir/newcerts

certificate = $dir/certs/myca.crt
serial = $dir/serial
crlnumber = $dir/crlnumber

crl = $dir/crl.pem
private_key = $dir/private/myca.key
RANDFILE = $dir/private/.rand

x509_extensions = usr_cert

Генерируем ключ для сервера, необходимо будет ввести пароль.

openssl genrsa -aes256 -out bareos-server.key.pem 4096

Генерируем запрос на сертификат. Важно: в данном пункте при генерации сертификата необходимо правильно указать Common Name (CN) чтобы оно совпадало с именем машины, иначе возникнут ошибки при попытках выполнить какое-либо задание. В данном примере CN = bareos-server

openssl req -config openssl.cnf -key bareos-server.key.pem -new -sha256 -out bareos-server.csr.pem

Подписываем CSR через CA, получаем сам сертификат

openssl ca -config openssl.cnf -in bareos-server.csr.pem -out bareos-server.cert.pem

Убираем пароль для ключа, т.к. bareos он нужен безпарольный

openssl rsa -in bareos-server.key.pem -out bareos-server.nopass.key.pem

CA-ключ и сертификат преобразуем в один файл с расширением PEM

cat /etc/pki/CA/private/myca.key /etc/pki/CA/certs/myca.cert > ca-chain.cert.pem

Генерируем DH-ключ

openssl dhparam -out dh1024.pem -5 1024

Копируем сертификаты bareos-server.cert.pem bareos-server.nopass.key.pem ca-chain.cert.pem dh1024.pem в папку /etc/bareos/ssl, которую предварительно нужно создать и установить группу bareos

Для каждого сертификата меняем группу на bareos

chgrp bareos *

Аналогичные действия нужно проделать для каждого клиента (bitrixvm, win-fd):

openssl genrsa -aes256 -out bitrixvm.key.pem 4096
openssl req -config openssl.cnf -key bitrixvm.key.pem -new -sha256 -out bitrixvm.csr.pem
openssl ca -config openssl.cnf -in bitrixvm.csr.pem -out bitrixvm.cert.pem
openssl rsa -in bitrixvm.key.pem -out bitrixvm.nopass.key.pem

Посредством SCP копируем 4 файла bitrixvm.cert.pem bitrixvm.nopass.key.pem ca-chain.cert.pem dh1024.pem на удаленную машину bitrixvm в папку /etc/bareos/ssl, которую предварительно нужно создать и установить группу bareos как для папки, так и для сертификатов.

В конфигурации клиента bitrixvm (/etc/bareos/bareos-fd.d/client/myself.conf) в секции Director {} необходимо, чтобы были прописаны сертификаты клиента, но не директора. В конфигурации на стороне сервера (/etc/bareos/bareos-dir.d/bitrixvm.conf) в секции Client {} указаны сертификаты директора. После внесения изменений в конфигурации – перезапустить службы.

Создание сертификатов для машины win-fd идентично.

Также нужно прописать сертификаты для bconsole, утилита, позволяющая управлять директором в файле /etc/bareos/bconsole.conf:

Director {
Name = bareos-server
DIRport = 9101
address = bareos-server
Password = «mmm_777»
TLS Enable = yes
TLS Require = yes
TLS Verify Peer = yes
TLS Allowed CN = «bareos-server»
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
}

Процедура бэкапа или восстановления выглядит следующим образом. Воспользуемся утилитой bconsole, в качестве приветствия увидим: *run – покажет все возможные Job:

*run
A job name must be specified.
The defined Job resources are:
1: Job-Full
2: Job-Full-restore
3: Job-bitrixvm-mysql
4: Job-bitrixvm-Full
5: Job-bitrixvm-mysql-restore
6: Job-bitrixvm-Full-restore
Select Job resource (1-6): 3

Run Backup job
JobName: Job-bitrixvm-mysql
Level: Full
Client: bitrixvm
Format: Native
FileSet: bareos-fileset-bitrixvm-mysql
Pool: bitrixvm-bareos-pool-Full (From Job FullPool override)
Storage: bareos-server-sd (From Job resource)
When: 2016-10-16 11:05:16
Priority: 10
OK to run? (yes/mod/no):
# Задача, ушедшая на выполнение, получает JobId
Job queued. JobId=75

Результат выполнения команды можно просмотреть либо через команду message и в ответ получим примерно такое:

16-Oct 11:05 bareos-server-sd JobId 75: Volume «bitrixvm-bareos-client-Full-0011» previously written, moving to end of data.
16-Oct 11:05 bareos-server-sd JobId 75: Ready to append to end of Volume «bitrixvm-bareos-client-Full-0011» size=2086097429
16-Oct 11:05 bareos-server-sd JobId 75: Elapsed time=00:00:01, Transfer rate=319.2 K Bytes/second
16-Oct 11:05 bareos-server JobId 75: Bareos bareos-server 15.2.2 (16Nov15):
Build OS: x86_64-redhat-linux-gnu redhat CentOS Linux release 7.0.1406 (Core) JobId: 75 Job: Job-bitrixvm-mysql.2016-10-16_11.05.38_07
Backup Level: Full
Client: «bitrixvm» 16.3.1 (01Jul16) x86_64-redhat-linux-gnu,redhat,CentOS release 6.6 (Final),CentOS_6,x86_64
FileSet: «bareos-fileset-bitrixvm-mysql» 2016-10-14 04:57:40
Pool: «bitrixvm-bareos-pool-Full» (From Job FullPool override)
Catalog: «bareos-server» (From Client resource)
Storage: «bareos-server-sd» (From Job resource)
Scheduled time: 16-Oct-2016 11:05:16
Start time: 16-Oct-2016 11:05:42
End time: 16-Oct-2016 11:05:42
Elapsed time: 0 secs
Priority: 10
FD Files Written: 1
SD Files Written: 1
FD Bytes Written: 319,187 (319.1 KB)
SD Bytes Written: 319,285 (319.2 KB)
Rate: 0.0 KB/s
Software Compression: 71.0 % (gzip)
VSS: no
Encryption: no
Accurate: no
Volume name(s): bitrixvm-bareos-client-Full-0011
Volume Session Id: 3
Volume Session Time: 1476554202
Last Volume Bytes: 2,086,417,588 (2.086 GB)
Non-fatal FD errors: 0
SD Errors: 0
FD termination status: OK
SD termination status: OK
Termination: Backup OK

Или через команду status dir

Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================
72 Full 0 0 Error 15-Oct-16 13:39 Job-bitrixvm-Full
73 Full 49,442 515.4 M OK 15-Oct-16 14:03 Job-bitrixvm-Full
74 Incr 20 36.81 K OK 16-Oct-16 02:01 Job-Full
75 Full 1 319.1 K OK 16-Oct-16 11:05 Job-bitrixvm-mysql

Здесь в графе «Статус» можно просмотреть состояние бэкапа. Job с номером 75 прошел успешно.

Восстановление происходит по команде restore

*restore

После чего будет предложен список всех возможных вариантов:

To select the JobIds, you have the following choices:

1: List last 20 Jobs run
2: List Jobs where a given File is saved
3: Enter list of comma separated JobIds to select
4: Enter SQL list command
5: Select the most recent backup for a client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Enter a list of files to restore before a specified time
9: Find the JobIds of the most recent backup for a client
10: Find the JobIds for a backup for a client before a specified time
11: Enter a list of directories to restore for found JobIds
12: Select full restore to a specified Job date
13: Cancel
Конфигуратор сервера

Гибкий выделенный сервер

Создайте собственный выделенный сервер

Конфигуратор сервера

Покажем список последних 20 заданий: Бэкап сервера

Жмем 3 и указываем номер JobID, например 75. После этого автоматически попадаем в консоль для выбора файлов, которые хотим восстановить:

cwd is: /
$

Список всех доступных команд можно просмотреть через команду help. Проверяем, какие файлы есть в наличии в данном бэкапе, отмечаем нужные файлы командой mark через указание файлов или через *, выбрав таким образом все. По завершении выполняем команду done, после чего пойдет диалог с системой.

$ ls
tmp/
$ cd tmp/
cwd is: /tmp/
$ ls
dump.sql
$ mark *
1 file marked.
$ done
The job will require the following Volume(s) Storage(s) SD Device(s)

===========================================================================

bitrixvm-bareos-client-Full-0011 bareos-server-sd bareos-sd

Volumes marked with «*» are online.

1 file selected to be restored.

Выбираем нужную нам задачу восстановления (пункт 2)

The defined Restore Job resources are: 1: Job-Full-restore 2: Job-bitrixvm-mysql-restore 3: Job-bitrixvm-Full-restore Select Restore Job (1-3): 2

Задаем клиента, для которого выполняем восстановление (2)

Defined Clients: 1: bareos-fd 2: bitrixvm 3: win-fd Select the Client (1-3): 2

Using Catalog «bareos-server» Run Restore job JobName: Job-bitrixvm-mysql-restore Bootstrap: /var/lib/bareos/bareos-server.restore.1.bsr Where: /tmp Replace: Always FileSet: bareos-fileset-bitrixvm-mysql Backup Client: bitrixvm Restore Client: bitrixvm Format: Native Storage: bareos-server-sd When: 2016-10-16 11:26:54 Catalog: bareos-server Priority: 10 Plugin Options: None OK to run? (yes/mod/no): yes

Подтверждаем задачу через yes, командой mod можно отредактировать параметры восстановления перед началом, в том числе и сменить директорию для восстановления. Далее задаче назначается JobId.

Job queued. JobId=76

По команде status dir можно увидеть состояние восстановления. Как видим, все прошло успешно. После этого можно переходить на удаленный клиент, и в папке /tmp обнаружим восстановленный файл dump.sql.

76 1 1.100 M OK 16-Oct-16 11:27 Job-bitrixvm-mysql-restore

В заключение можно сказать, что Bareos активно развивается, имеет в своем арсенале множество полезных функций, которые остались за пределами этой статьи, а наличие плагинов, которые могут расширить функционал также оказывают положительное впечатление (резервное копирование MS SQL, плагины для хранения данных на Ceph, Gluster, бэкап LDAP).

Эта статья была полезной?

Тэги:

#server

Понравилась статья?

Согласие на использование файлов cookie

Нажимая «Я согласен», вы даете согласие на использование cookie, чтобы предоставить вам релевантный опыт. Посетите «Управление cookie», чтобы дать ограниченное согласие. Подробнее

Настройки файлов cookie

Функциональные

Необходимые файлы cookie имеют решающее значение для основных функций веб-сайта, и без них веб-сайт не будет работать должным образом.

Аналитические

Аналитические файлы cookie используются для понимания того, как посетители взаимодействуют с веб-сайтом.

Рекламные

Рекламные файлы cookie используются для предоставления посетителям релевантной рекламы и маркетинговых кампаний.