Бекап сервера за допомогою 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 - клієнт з 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
}
# Додаємо як окремі файли конфігурації двох інших клієнтів.
@/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 місяці
}

Pool {
Name = win-bareos-pool-Differential
Pool Type = Backup
AutoPrune = yes
Recycle = yes
Volume Retention = 11 днів
Label Format = "win-bareos-client-Differential-"
}

Pool {
Name = win-bareos-pool-Incremental
Pool Type = Backup
AutoPrune = yes
Recycle = yes
Volume Retention = 10 днів
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 = "Попередній 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 місяці
}

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 днів
}

Pool {
Name = bitrixvm-bareos-pool-Incremental
Pool Type = Backup
Label Format = "bitrixvm-bareos-client-Incremental-"
AutoPrune = yes
Recycle = yes
Volume Retention = 10 днів
}

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:
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
Формат: 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» спочатку збираються, 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 Докладніше Ім'я
================================================== ==================
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

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

Щоб вибрати JobIds, ви повинні 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: Виберіть most recent backup for client
6: Select backup for a client before a specified time
7: Enter a list of files to restore
8: Введіть список файлів до останнього після визначеного часу
9: Find the JobIds of the most recent backup for client
10: Find the JobIds for backup for client for 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 файл 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 "*" є онлайн.

1 файл 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

За допомогою 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 Формат: 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-01-16 11:27 Job-bitrixvm-mysql-restore

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

Теги:

#server

Сподобалася стаття?

Згода на використання файлів cookie

Натискаючи "Я згоден", ви даєте згоду на використання файлів cookie на нашому веб-сайті, щоб надати вам найбільш релевантний досвід, запам'ятовуючи ваші уподобання та повторні відвідування. Однак ви можете відвідати "Керування файлами cookie", щоб надати контрольовану згоду. Детальніше

Налаштування файлів cookie

Функціональні

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

Аналітичні

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

Рекламні

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