Наличие актуального бэкапа под рукой является крайне важным моментом, потому как никто не застрахован от неприятных случаев, связанных с выходом из строя носителей, утери информации, случайного удаления и т.д. В таких ситуациях резервная копия сохранит не только нервы, но также избавит от возможных финансовых проблем, которые могут возникнуть из-за утери данных.
Bareos – была выбрана как система резервного копирования по таким причинам:
- является Open Source;
- активно развивается;
- имеет множество полезных функций;
- может расширять свой функционал благодаря плагинам.
Описание задачи
Допустим у нас есть 3 машины. Серверы: 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 — название клиента говорит само за себя, 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 — описание задачи по бэкапу.
Из официальной документации схема взаимодействия между службами:
#Обязательный параметр имя директора
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
Важно чтобы было соответствие между конфигурациями:
# Имя
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:
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
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:
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
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:
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:
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: 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
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).
SIM-Networks – отказоустойчивое облако в Германии, SSD хостинг и VPS.
Комментарии (29)
varnav
20.10.2016 17:11+1Чтение этой инструкции занимает больше времени, чем всё внедрение какого-нибудь из коммерческих продуктов бекапа.
caban
20.10.2016 19:40+3Главное один раз разобраться, там проще будет. Я не сразу в Bareos въехал. Bareos — бесплатен, а поддерживать его не трудно.
muon
21.10.2016 03:18+1«Какого-нибудь» или какого-то конкретно? DPM, например, по сравнению с бакулой/бареосом время админа не экономит вообще. Veeam — да, но надо смотреть, что дешевле — вим или админ, с учётом того, что дорогущий админ с кучей сертификатов для бареоса не нужен.
ph33L
20.10.2016 23:12Интересует опыт использования bareos с ленточными библиотеками, включая управление лентами в библиотеке
muon
21.10.2016 03:34+1Конфиги у бареоса, конечно, очень самобытные. С виду как у всех, ну описаны какие-то объекты, ничего особенного. Но когда вникаешь в их взаимосвязи — это цирк: в sd директива Name обозначает сервер, а Device — девайс, в dir Name уже обозначает девайс, а имя сервера нам становится безразлично, потому что есть Address; по этой же причине в dir безразличен Name fd, но в fd обязательно должно быть указано Name директора. Есть шаблон задания, но шаблонов пулов почему-то нет (почему нельзя любой объект объявить шаблоном, как в nagios?). Свойства объектов бывают не только обязательные и необязательные, но и «обязательные хотя бы где-нибудь», например, Storage должен быть указан в Pool или в Job/Jobdef.
Впечатления двоякие, с одной стороны, неудобно. С другой стороны, есть некоторая свобода, можно создать франкенштейна с восемью руками, при этом проверка валидности конфигов не выдаст алерт при отсутствии головы (но может проверить наличие усов, они обязаны быть, пусть и не голове).
milo1
21.10.2016 10:11В свое время основатель бареос работал в бакуле, потом начал по-тихому код воровать в бареос.
Закончилось вот этим http://blog.bacula.org/bacula-mini-status/merlin-vrn
21.10.2016 10:17В смысле, воровать код? Bacula — AGPL-3, BareOS — то же самое. Или AGPL-3 не позволяет брать код и внедрять его в другой продукт с такой же лицензией?
kav4ik
21.10.2016 10:47А может ли эта программа делать полный бэкап системного раздела и его последующее восстановление? И возможен ли бэкап серверов AD?
foxmuldercp
21.10.2016 15:54Ага. Возможен. Штатными средствами ОС. дешевле, проще, быстрее и известно любому нормальному админу.
Штатная бекапилка отлично работает начиная с w2k3.iborzenkov
21.10.2016 17:52Ога, особенно на упавшем винте.
Акронис под винду на этот случай есть
Ну и http://relax-and-recover.org/about/ для линуксов и bareosfoxmuldercp
21.10.2016 19:38А для упавшего винта есть бекары которые надо делать ДО аварии. а штатные средства ОС всегда предпочительнее посторонних производителей.
iborzenkov
22.10.2016 09:49Кхм…
Любой бекап нужно делать до аварии, а восстанавливать после.
Чем предпочтительней? Для одной машины их вполне хватает, а вот если их много тут уже в w2k3 уже все плохо.foxmuldercp
22.10.2016 13:47Эм. у меня штатной виндовой бекапилкой на 2к3 сервер со стриммером улетало 2 десятка 2008+ серверов, откуда резалось на ленты, включая 2тб сторадж, и никаких проблем с этим за 5 лет не было.
Ну сгорела сервер из кластера рдп, ну у пользователей стала чуть дольше открываться сессия и 1ска… вообще никто не заметил пропажи.
merlin-vrn
22.10.2016 10:44+2Бекапить надо на другой винт, а не на тот же самый. Кроме того, никто не мешает бекапить по iSCSI.
А за рекомендацию и вообще использование акрониса в своей организации я вообще в последнее время готов убивать. Потому, что делают, не пойми что, а потом оказываются, что это тыква и использовать не получится.
muon
24.10.2016 04:29+2Противопоставление бареоса и штатных средств в принципе не имеет смысла. Бареос в чистом виде — забиралка файлов и запускалка скриптов. Никто не предлагает бэкапить AD копированием файлов базы данных. Бареос запускает «штатное средство», хоть ntbackup.exe, хоть Backup-WTFServer, забирает полученные файлы и раскладывает их по стораджам, при необходимости сериализует задания, контролирует их успешность, предоставляет интерфейс и так далее. В общем, даёт админу единый инструмент управления всем хозяйством.
Можно подобную функциональность реализовать скриптами и засунуть в Task Scheduler — пожалуйста, каждый сам творец своей инфраструктуры.
qwertyRu
21.10.2016 14:14Спасибо за ответы.
Еще пару вопросов, что бы сэкономить свое время :)
1. Есть ли возможность дампить базы данных (mysql, postresql) средствами/плагинами bareos?
2. В случае краха bareos есть ли возможность доступа к резервным копиям минуя bareos?
Или подняв новую установку bareos получить доступ к уже имеющимся копиям от другой bareos?merlin-vrn
22.10.2016 10:47+1brestore вытягиваем из последнего записанного тома SQL-дамп каталога (который по умолчанию бекапится каждый раз после всех остальных заданий), разворачиваем, настраиваем SD — и у нас считай та же самая инсталляция системы резервного копирования
muon
24.10.2016 04:32По п. 1. В дефолтном конфиге есть задание бэкапа базы bareos, там видно, как это делается: запускатся внешняя команда, которая делает дамп базы, затем бэкапится сдампленный файл.
aik
Чем-то мне всё это напоминает инструкции по установке bacula — настолько же страшно. :)
k3NGuru
Потому что это одно и то же. Bareos форк Bacula
merlin-vrn
не страшно. Надо въехать в схему ротации томов и всё становится просто и понятно
aik
Лично мне страшно. :)