Наявність актуальної резервної копії для будь-якого користувача (особливо бізнесу) вкрай важливо, оскільки ніхто не застрахований від неприємних випадків, пов'язаних з виходом з ладу носіїв, втрати інформації, випадкового видалення тощо. У таких ситуаціях бекап стає єдиним засобом відновлення ваших безцінних даних, і тому здатний позбавити вас безлічі неприємностей, витраченого часу, зіпсованих нервів і нераціонально витрачених грошей.
Ми вибрали популярне ПЗ 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 - клієнт з 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 місяці
# після чого каталог очищається від застарілих даних
AutoPrune = yes
# Volume перезаписується
Recycle = yes
}
Pool {
# Ім'я пулу для інкрементального бекапу
Name = bareos-pool-Incremental
Pool Type = Backup
Recycle = yes
Auto Prune = yes
Volume Retention = 10 днів
Label Format = "bareos-client-Incremental-"
}
Pool {
# Ім'я пулу для диференціального бекапу
Name = bareos-pool-Differential
Pool Type = Backup
Recycle = yes
Auto Prune = yes
Volume Retention = 11 днів
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
}