Bareos (Backup Archiving Recovery Open Sourced) является централизованной, клиент-серверной и кроссплатформерной системой для резервного копирования, архивирования и восстановления данных.
Является форком Bacula и активно развивается. Имеет клиенты под Linux и Windows. Полный список поддерживаемых фич на Github.
Принципы работы и конфигурация полностью совпадают с Bacula, поэтому подробно останавливаться на описании всех параметров не буду. Статьи о Bacula есть на Хабре («Пошаговая модификация предустановленной настройки Bacula», «Bacula: для тех кому надо по-быстрому и в картинках», «Настройка и понимание Bacula», «Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula»).
Хосты:
testbackup-bareos – сервер Bareos, на котором работают bconsole, bareos-director, file daemon, storage daemon. IP адрес – 10.11.0.150
testbackup-client-03 – клиент, который мы бэкапим. ОС Роса Кобальт 1.0. На нём работает file-daemon. IP адрес – 10.11.0.153
Я выбрал Bareos 15.Х, так как здесь улучшена работа с сокетами. Но данная инструкция также подойдёт и для ветки 14.X.
Устанавливаем Bareos из репозитория и настраиваем PostgreSQL:
Конфигурация клиента находится в каталоге /etc/bareos/bareos-dir.d:
Здесь создано 4 задания – 2 Job для бэкапа/восстановления всей системы (/ и /boot) и 2 Job для бэкапа/восстановления БД MySQL Zabbix с использованием пайпа (bpipe). В нашем примере бэкап БД делается лишь для демонстрации работы bpipe. Дамп базы не сохраняется локально у клиента, он сразу передаётся по сети.
Структура bpipe:
plugin – имя плагина без приставки -fd.so;
filepath – псевдопуть в Volume к файлу бэкапа. Этот путь и имя файла необходимы только для логического представления в дереве каталога при восстановлении;
readprogram – программа, stdout которой считывает bpipe и передаёт на сервер;
writeprogram – программа, в stdin которой bpipe передаёт данные с сервера.
Конфигурация Director в каталоге /etc/bareos:
Конфигурация bconsole в каталоге /etc/bareos:
Конфигурация Storage Daemon в каталоге /etc/bareos:
Если имя клиента не резолвится, то прописываем в /etc/hosts:
echo «10.11.0.153 testbackup-client-03» >> /etc/hosts
Запускаем Director, File Daemon и Storage:
На этом настройка сервера Bareos закончена. Переходим к настройке клиента testbackup-client-03.
Устанавливаем репозиторий bareos и ставим File Daemon:
Конфигурация File Daemon в каталоге /etc/bareos:
На этом настройка клиента закончена.
Идём на сервер testbackup-bareos и запускаем бэкап базы данных MySQL и полный бэкап:
Для восстановления базы данных нужно запустить соответствующую задачу:
И следовать по предлагаемым пунктам.
Или, если мы знаем JobId (например, 158), то сразу запустить:
REAR (Relax-and-Recover) это решение Linux BMDR (Bare Metal Disaster Recovery), восстановление системы на чистое железо.
Основные фичи:
Остальные фичи есть на сайте.
В нашем примере рассмотрим создание загрузочного образа ISO и полное восстановление системы клиента testbackup-client-03, используя в качестве бэкэнда Bareos.
Загрузочный ISO-образ создаётся на клиенте и передаётся по NFS на сервер (в нашем случае на сервер Bareos) в папку nfs://10.11.0.150/backup
Для этого предварительно необходимо на сервере настроить доступ по NFS.
После переходим к настройке клиента testbackup-client-03:
Устанавливаем bconsole:
Для нашего дистрибутива РОСА Кобальт подключаем репозиторий EPEL:
Закомментируем mirrorlist и раскомментируем baseurl в /etc/yum.repos.d/epel.repo:
Подключим репозиторий CentOS в /etc/yum.repos.d/CentOS-Base.repo:
И импортируем GPG-ключ:
Устанавливаем REAR и необходимые компоненты:
В файлы ip_addresses и route добавляем информацию о ip, интерфейсе и дефолтном шлюзе:
Во избежание проблем с определением имён Job, Client рекомендую, чтобы имя File Daemon клиента точно соответствовало его hostname. Т.е. если hostname сервера testbackup-client-03, то в bareos-fd.conf в секции FileDaemon должно быть написано:
Name = testbackup-client-03-fd
Настраиваем local.conf из шаблона:
Не публикую полную конфигурацию local.conf т.к. я изменил лишь следующие параметры в сравнении с default.conf:
Так как я использую дистрибутив РОСА Кобальт (rhel-based версии 6.6) и поэтому я установил OS_VENDOR и OS_VERSION как для CentOS 6.6.
Для наглядности я использую свой шаблон имён для Job, File Set, Client, поэтому необходимо отредактировать скрипт восстановления REAR, иначе скрипт не найдёт все необходимые данные.
Находим строчку:
И там же (перед ней, например) задаём новую переменную:
Вместо:
Пишем:
Делаем загрузочный ISO:
Для информации: полученный размер ISO составляет порядка 30-40 МБ.
Для восстановления загружаемся с данного образа и выбираем Recover testbackup-client-03.
Запускаем процесс восстановления:
По окончании процесса восстановления проверяем нашу систему, которая примонтирована в /mnt/local.
Убеждаемся, что всё на месте и перезагружаемся:
Система полностью восстановлена.
Прежде чем использовать загрузочный образ для какой-либо ОС, я рекомендую его предварительно протестировать.
Является форком Bacula и активно развивается. Имеет клиенты под Linux и Windows. Полный список поддерживаемых фич на Github.
Принципы работы и конфигурация полностью совпадают с Bacula, поэтому подробно останавливаться на описании всех параметров не буду. Статьи о Bacula есть на Хабре («Пошаговая модификация предустановленной настройки Bacula», «Bacula: для тех кому надо по-быстрому и в картинках», «Настройка и понимание Bacula», «Централизованное резервное копирование данных Windows и *nix серверов средствами Bacula»).
Хосты:
testbackup-bareos – сервер Bareos, на котором работают bconsole, bareos-director, file daemon, storage daemon. IP адрес – 10.11.0.150
testbackup-client-03 – клиент, который мы бэкапим. ОС Роса Кобальт 1.0. На нём работает file-daemon. IP адрес – 10.11.0.153
Настройка сервера Bareos
Я выбрал Bareos 15.Х, так как здесь улучшена работа с сокетами. Но данная инструкция также подойдёт и для ветки 14.X.
Устанавливаем Bareos из репозитория и настраиваем PostgreSQL:
wget -O /etc/yum.repos.d/bareos.repo http://download.bareos.org/bareos/experimental/nightly/CentOS_6/bareos:master.repo
yum install bareos bareos-common bareos-database-postgresql bareos-client bareos-bconsole bareos-storage bareos-filedaemon bareos-director
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/bareos/bareos-dir.d:
testbackup-client-03.conf:
Job {
Name = "testbackup-client-03-backup"
Type = Backup
Level = Incremental
Client = testbackup-client-03-fd
FileSet = "testbackup-client-03-fileset"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = testbackup-client-03-pool-Incremental
Priority = 10
Write Bootstrap = "/var/lib/bareos/%c.bsr"
Full Backup Pool = testbackup-client-03-pool-Full
Differential Backup Pool = testbackup-client-03-pool-Differential
Incremental Backup Pool = testbackup-client-03-pool-Incremental
}
Job {
Name = "testbackup-client-03-restore"
Type = Restore
Client = testbackup-client-03-fd
FileSet = "testbackup-client-03-fileset"
Storage = File
Pool = testbackup-client-03-pool-Incremental
Messages = Standard
Where = /
}
Job {
Name = "testbackup-client-03-backup-mysql"
Type = Backup
Level = Incremental
Client = testbackup-client-03-fd
FileSet = "testbackup-client-03-fileset-mysql"
Schedule = "WeeklyCycle"
Storage = File
Messages = Standard
Pool = testbackup-client-03-pool-Incremental
Priority = 10
Write Bootstrap = "/var/lib/bareos/%c.bsr"
Full Backup Pool = testbackup-client-03-pool-Full
Differential Backup Pool = testbackup-client-03-pool-Differential
Incremental Backup Pool = testbackup-client-03-pool-Incremental
}
Job {
Name = "testbackup-client-03-restore-mysql"
Type = Restore
Client = testbackup-client-03-fd
FileSet = "testbackup-client-03-fileset-mysql"
Storage = File
Pool = testbackup-client-03-pool-Incremental
Messages = Standard
Where = /
}
FileSet {
Name = "testbackup-client-03-fileset"
Include {
Options {
compression = GZIP
Signature = MD5 # calculate md5 checksum per file
}
File = "/"
File = "/boot"
}
}
FileSet {
Name = "testbackup-client-03-fileset-mysql"
Include {
Plugin = "bpipe:file=/MYSQL/dump.sql:reader=mysqldump -uzabbix -p12345 --single-transaction --add-drop-database -B zabbix:writer=mysql -uzabbix -p12345"
Options {
Signature = MD5 # calculate md5 checksum per file
compression = GZIP
}
}
}
Client {
Name = testbackup-client-03-fd
Address = testbackup-client-03
Password = "Msmn8GRO0CnMyUljLmB9u1wgrbYXoV1rI8MLugI6JJqc "
File Retention = 30 days # 30 days
Job Retention = 6 months # six months
AutoPrune = no # Prune expired Jobs/Files
}
Pool {
Name = testbackup-client-03-pool-Full
Pool Type = Backup
Recycle = yes # Bareos can automatically recycle Volumes
AutoPrune = yes # Prune expired volumes
Volume Retention = 365 days
Maximum Volume Bytes = 30G
Maximum Volumes = 100
Label Format = "testbackup-client-03-pool-Full-"
}
Pool {
Name = testbackup-client-03-pool-Differential
Pool Type = Backup
Recycle = yes # Bareos can automatically recycle Volumes
AutoPrune = yes
Volume Retention = 90 days
Maximum Volume Bytes = 10G
Maximum Volumes = 100
Label Format = "testbackup-client-03-pool-Differential-"
}
Pool {
Name = testbackup-client-03-pool-Incremental
Pool Type = Backup
Recycle = yes
AutoPrune = yes
Volume Retention = 30 days
Maximum Volume Bytes = 1G
Maximum Volumes = 100
Label Format = "testbackup-client-03-pool-Incremental-"
}
Здесь создано 4 задания – 2 Job для бэкапа/восстановления всей системы (/ и /boot) и 2 Job для бэкапа/восстановления БД MySQL Zabbix с использованием пайпа (bpipe). В нашем примере бэкап БД делается лишь для демонстрации работы bpipe. Дамп базы не сохраняется локально у клиента, он сразу передаётся по сети.
Структура bpipe:
Plugin = "<plugin>:file=<filepath>:reader=<readprogram>:writer=<writeprogram>"
plugin – имя плагина без приставки -fd.so;
filepath – псевдопуть в Volume к файлу бэкапа. Этот путь и имя файла необходимы только для логического представления в дереве каталога при восстановлении;
readprogram – программа, stdout которой считывает bpipe и передаёт на сервер;
writeprogram – программа, в stdin которой bpipe передаёт данные с сервера.
Конфигурация Director в каталоге /etc/bareos:
bareos-dir.conf
@/etc/bareos/bareos-dir.d/testbackup-client-03.conf #включаем конфигурацию клиента
Director {
Name = testbackup-bareos-dir
QueryFile = "/usr/lib/bareos/scripts/query.sql"
Maximum Concurrent Jobs = 10
Password = "lY/wVlXuC25qk18i15iw10MpOVxLwDLFgOUMtSMpFOC6"
Messages = Daemon
Auditing = yes
Maximum Concurrent Jobs = 20
}
Schedule {
Name = "WeeklyCycle"
Run = Full 1st sat at 21:00
}
Storage {
Name = File
Address = testbackup-bareos
Password = "k4dkFWMwJh3zBpnAOpa9+oule1z/OT0GIcE4wZYySgbU"
Device = FileStorage
Media Type = File
}
Catalog {
Name = MyCatalog
dbdriver = "postgresql"
dbname = "bareos"
dbuser = "bareos"
dbpassword = ""
}
Messages {
Name = Standard
mailcommand = "/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \<%r\>\" -s \"Bareos: %t %e of %c %l\" %r"
mailcommand = "/etc/bareos/scripts/bareoszabbix.bash %i"
operatorcommand = "/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \<%r\>\" -s \"Bareos: Intervention needed for %j\" %r"
mail = root@localhost = all, !skipped, !audit
operator = root@localhost = mount
console = all, !skipped, !saved, !audit
append = "/var/log/bareos/bareos.log" = all, !skipped, !audit
catalog = all, !audit
}
Messages {
Name = Daemon
mailcommand = "/usr/bin/bsmtp -h localhost -f \"\(Bareos\) \<%r\>\" -s \"Bareos daemon message\" %r"
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
}
Конфигурация bconsole в каталоге /etc/bareos:
bconsole.conf
Director {
Name = testbackup-bareos-dir
DIRport = 9101
address = testbackup-bareos
Password = "lY/wVlXuC25qk18i15iw10MpOVxLwDLFgOUMtSMpFOC6"
}
Конфигурация Storage Daemon в каталоге /etc/bareos:
bareos-sd.conf
Storage {
Name = testbackup-bareos-sd
Maximum Concurrent Jobs = 20
}
Director {
Name = testbackup-bareos-dir
Password = "k4dkFWMwJh3zBpnAOpa9+oule1z/OT0GIcE4wZYySgbU"
}
Device {
Name = FileStorage
Media Type = File
Archive Device = /backup
LabelMedia = yes;
Random Access = yes;
AutomaticMount = yes;
RemovableMedia = no;
AlwaysOpen = no;
}
Messages {
Name = Standard
director = testbackup-bareos-dir = all
}
Если имя клиента не резолвится, то прописываем в /etc/hosts:
echo «10.11.0.153 testbackup-client-03» >> /etc/hosts
Запускаем Director, File Daemon и Storage:
service bareos-dir start
service bareos-sd start
service bareos-fd start
На этом настройка сервера Bareos закончена. Переходим к настройке клиента testbackup-client-03.
Настройка клиента Bareos.
Устанавливаем репозиторий bareos и ставим File Daemon:
yum -y install bareos-filedaemon
Конфигурация File Daemon в каталоге /etc/bareos:
bareos-fd.conf
Director {
Name = testbackup-bareos-dir
Password = "Msmn8GRO0CnMyUljLmB9u1wgrbYXoV1rI8MLugI6JJqc"
}
FileDaemon {
Name = testbackup-client-03-fd
Maximum Concurrent Jobs = 20
Compatible = no #совместимость с Bacula отключена, чтобы использовать все фичи bareos-fd
}
Messages {
Name = Standard
director = testbackup-client-03-dir = all, !skipped, !restored
}
На этом настройка клиента закончена.
Запуск бэкапа/восстановления
Идём на сервер testbackup-bareos и запускаем бэкап базы данных MySQL и полный бэкап:
#bconsole
*run testbackup-client-03-backup-mysql
*run testbackup-client-03-backup
Для восстановления базы данных нужно запустить соответствующую задачу:
#bconsole
*restore
И следовать по предлагаемым пунктам.
Или, если мы знаем JobId (например, 158), то сразу запустить:
*restore restorejob=testbackup-client-03-restore-mysql jobid=158
Установка и настройка Relax-and-Recover
REAR (Relax-and-Recover) это решение Linux BMDR (Bare Metal Disaster Recovery), восстановление системы на чистое железо.
Основные фичи:
- Восстановление на чистое железо: physical-to-virtual (P2V), virtual-to-physical (V2P), physical-to-physical (P2P) and virtual-to-virtual (V2V), системы виртуализации KVM, Xen, VMware
- Типы загрузочных устройств: ISO, USB, eSATA, OBDR/bootable tape, PXE
- Протоколы для передачи данных: HTTP, HTTPS, FTP, SFTP, NFS, CIFS (SMB)
- Виды разбивки диска: HWRAID (HP SmartArray), SWRAID, LVM, multipathing, DRBD, iSCSI, LUKS (encrypted partitions and filesystems)
- Бэкэнды: CommVault Galaxy, EMC NetWorker (Legato), HP DataProtector, IBM Tivoli Storage Manager (TSM), SEP Sesam, Symantec NetBackup, Bacula, Bareos, duplicity / duply
Остальные фичи есть на сайте.
В нашем примере рассмотрим создание загрузочного образа ISO и полное восстановление системы клиента testbackup-client-03, используя в качестве бэкэнда Bareos.
Загрузочный ISO-образ создаётся на клиенте и передаётся по NFS на сервер (в нашем случае на сервер Bareos) в папку nfs://10.11.0.150/backup
Для этого предварительно необходимо на сервере настроить доступ по NFS.
После переходим к настройке клиента testbackup-client-03:
Устанавливаем bconsole:
yum -y install bareos-bconsole
/etc/bareos/bconsole.conf
Director {
Name = testbackup-bareos-dir
DIRport = 9101
address = testbackup-bareos
Password = "lY/wVlXuC25qk18i15iw10MpOVxLwDLFgOUMtSMpFOC6"
}
Для нашего дистрибутива РОСА Кобальт подключаем репозиторий EPEL:
rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
Закомментируем mirrorlist и раскомментируем baseurl в /etc/yum.repos.d/epel.repo:
epel.repo
[epel]
name=Extra Packages for Enterprise Linux 6 - $basearch
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
failovermethod=priority
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
Подключим репозиторий CentOS в /etc/yum.repos.d/CentOS-Base.repo:
CentOS-Base.repo
[base]
name=CentOS-$releasever - Base
baseurl=http://mirror.centos.org/centos/6.6/os/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
И импортируем GPG-ключ:
rpm --import http://mirror.centos.org/centos/6.6/os/x86_64/RPM-GPG-KEY-CentOS-6
Устанавливаем REAR и необходимые компоненты:
yum -y install nfs-utils genisoimage syslinux rear
В файлы ip_addresses и route добавляем информацию о ip, интерфейсе и дефолтном шлюзе:
mkdir /etc/rear/mappings
echo "eth0 10.11.0.153/24" > /etc/rear/mappings/ip_addresses
echo "default 10.11.0.1 eth0" > /etc/rear/mappings/route
Во избежание проблем с определением имён Job, Client рекомендую, чтобы имя File Daemon клиента точно соответствовало его hostname. Т.е. если hostname сервера testbackup-client-03, то в bareos-fd.conf в секции FileDaemon должно быть написано:
Name = testbackup-client-03-fd
Настраиваем local.conf из шаблона:
cp /usr/share/rear/conf/default.conf /etc/rear/local.conf
Не публикую полную конфигурацию local.conf т.к. я изменил лишь следующие параметры в сравнении с default.conf:
local.conf
OS_VENDOR=CentOS
OS_VERSION=6.6
BACKUP=BAREOS
OUTPUT=ISO
BAREOS_CLIENT=$(grep $(hostname -s) /etc/bareos/bareos-fd.conf | awk '/-fd/ {print $3}' )
OUTPUT_URL=nfs://10.11.0.150/backup
USE_STATIC_NETWORKING=y
Так как я использую дистрибутив РОСА Кобальт (rhel-based версии 6.6) и поэтому я установил OS_VENDOR и OS_VERSION как для CentOS 6.6.
Для наглядности я использую свой шаблон имён для Job, File Set, Client, поэтому необходимо отредактировать скрипт восстановления REAR, иначе скрипт не найдёт все необходимые данные.
vi /usr/share/rear/restore/BAREOS/default/40_restore_backup.sh
Находим строчку:
BAREOS_CLIENT=$(grep $(hostname -s) /etc/bareos/bareos-fd.conf | awk '/-fd/ {print $3}' )
И там же (перед ней, например) задаём новую переменную:
BAREOS_CLIENT_1=$(grep "Name =.*-fd" /etc/bareos/bareos-fd.conf | awk '{print $3}' | sed -e 's/-fd//g' )
Вместо:
echo "restore client=$BAREOS_CLIENT where=/mnt/local select all done
Пишем:
echo "restore client=$BAREOS_CLIENT_1-fd restorejob=$BAREOS_CLIENT_1-restore fileset=$BAREOS_CLIENT_1-fileset where=/mnt/local select all done
Делаем загрузочный ISO:
rear -v -d mkrescue
Для информации: полученный размер ISO составляет порядка 30-40 МБ.
Для восстановления загружаемся с данного образа и выбираем Recover testbackup-client-03.
Запускаем процесс восстановления:
rear -v recover
По окончании процесса восстановления проверяем нашу систему, которая примонтирована в /mnt/local.
Убеждаемся, что всё на месте и перезагружаемся:
Система полностью восстановлена.
Прежде чем использовать загрузочный образ для какой-либо ОС, я рекомендую его предварительно протестировать.
Комментарии (4)
max_rip
13.07.2015 17:23Ребят, вот тут хочу развернуть его.
Цель:
-бекап с сервера 2012 с файловой 1С (раз в неделю полный системы и регулярные файлов 1с)
-куча мелких дебианов с сервисами различного порядка
-один дебиан выступает как файловая шара для самбы.
-может пару машин с windows 7 (все будет зависеть от объема который я смогу выбить под хранение)
Я так понимаю мне не нужен особо сильный процессор на самом сервере, на котором будут установлены все роли сразу? Хватит ли i3 или сразу брать i5?
beststoragename
Bareos отличное ПО для построения простейших конфигураций резервного копирования. Если в процессе эксплуатации потребуется резервировать UNIX, SAP и т.п., то тут без bacula (в особенности с версией Enterprise) не обойтись.
VGusev2007
Смотря какой инстанс SAP. Если не нагруженный, то bareos подходит.
Мне не понравился: REAR, тем, что он умеет только в Linux системы. Реальность она всё же другая… И предполагает кроссплатформенность.