Система резервування Bacula. Встановлення і налаштовування
Bacula – пакет програм архітектури “клієнт-сервер” з відкритим початковим кодом, призначений для створення резервних копій даних, що знаходяться на комп’ютерах з різними операційними системами; для відновлення і перевірки збережених даних. Цей пакет має модульну архітектуру, легко масштабується, та може бути використаний, як для невеликої локальної мережі з кількох комп’ютерів, так і для мережі підприємства, що складається з кількох сотень комп’ютерів.
Основу Bacula складають 5 основних програм:
- Директор (Bacula Director), призначений для зберігання і запуску завдань резервного копіювання або відновлення, та ведення журналу всіх операцій.
- Зберігач (Bacula Storage Daemon), призначений для запису даних на фізичні носії: жорсткий диск, магнітну стрічку, оптичний диск тощо.
- Клієнт (Bacula File Daemon). Клієнтська частина, яка встановлюється на комп’ютері, що містить дані для архівації.
- Консоль керування. Призначена для контролю та керування операціями. Існують текстові та графічні консолі для Unix-подібних операційних систем та для ОС Windows.
- Монітор. Призначений для спостереження за станом Директора, Зберігача та Клієнтів.
- Каталог — реляційна база даних, в якій Bacula зберігає інформації про кожний архівований файл, що дає змогу швидко та ефективно відновлювати інформацію з архівів. На сьогодні Bacula підтримує бази даних MySQL, PostgreSQL та SQLite. База може бути розташована як на тому комп’ютері, що й демон керування, так і на іншому
В статті розглянутий приклад використання пакету Bacula 2.4.4 в локальній мережі, що складається з кількох робочих станцій під керуванням ОС Windows XP та серверу з ОС FreeBSD 7.0, на якому встановлена система керування базами даних MySQL.
Встановлення
На сервері з ОС FreeBSD 7.0 було зібрано з колекції портів Директор, Зберігач і Консоль керування:
cd /usr/ports/sysutils/bacula-server
make install clean
та Клієнт:
cd /usr/ports/sysutils/bacula-client
make install clean
Програми були зібрані з підтримкою MySQL та NLS (Native Language Support via gettext utilities ).
Для автоматичного завантаження Директора, Зберігача та Клієнта в конфігураційний файл системи /etc/rc.conf необхідно додати, відповідно:
bacula_dir_enable="YES"
bacula_sd_enable="YES"
bacula_fd_enable="YES"
Далі, була створена база даних під керуванням MySQL для зберігання журналів операцій. Для цього були використані сценарії командної оболонки, розташовані в директорії /usr/local/share/bacula:
- create_mysql_database – створення бази;
- grant_mysql_privileges — надання привілеїв користувачеві “bacula”;
- make_mysql_tables — створення таблиць бази даних.
На робочих станціях з ОС Windows XP був встановлений клієнт winbacula 2.4.4, який можна отримати на сайті http://sourceforge.net.
Інсталяційний пакет winbacula, крім власне клієнта, також дає змогу встановити текстову та графічну консоль керування.
Після встановлення системи Bacula необхідно створити конфігураційні файли для Директора, Зберігача, Клієнта і Консолі. Для полегшення цієї операції, в директорію /usr/local/etc (для ОС FreeBSD) записуються файли-зразки: bacula-dir.conf.sample, bacula-sd.conf.sample, bacula-fd.conf.sample, bconsole.conf.sample. Ці файли потрібно перейменувати, прибравши з їх назви суфікс .sample, та відредагувати відповідно до власних потреб.
Основні терміни
Перш, ніж розпочати налаштовування системи, необхідно визначити основні терміни, що використовуються в системі Bacula.
- Завдання (Job) — операція створення архіву файлів, або відновлення інформації з архіву.
- Том (Volume) — одиниця збереження інформації, що становить собою окремий файл, магнітну стрічку, CD, DVD. Один том може містити кілька завдань, або одне завдання може займати кілька томів.
- Пул (Pool) — група томів.
- Набір файлів (FileSet) — списки директорій та окремих файлів, що повинні бути архівовані. Можуть містити регулярні вирази.
- Повідомлення (Messages) — інформація про стан компонентів Bacula і завдань. Можуть передаватися по електронній пошті, або записуватися в журнал.
- Файл початкового завантаження (bootstrap) — спеціальний текстовий файл, що містить інформацію про архівовані файли та томи. Цей файл використовується під час операції відновлення.
Всього існують три типи архівування:
- Повне (Full) — усі файли.
- Диференційне (Differential) — файли, що були змінені після останнього вдалого повного копіювання.
- Інкрементне (Incremental) — файли, що були змінені після останнього вдалого копіювання будь-якого типу.
Налаштовування Директора
Конфігураційний файл Директора bacula-dir.conf, як і решта конфігураційних файлів Bacula, складається з логічних розділів, що описують окремі ресурси. Розділ кожного ресурсу узятий в фігурні дужки. Рядки з коментарями починаються з символу #. Приклад bacula-dir.conf:
Director { | # Параметри Директора | ||
Name = backup-dir | # Ім'я Директора | ||
DIRport = 9101 | # Порт, який прослуховує Директор | ||
QueryFile = "/usr/local/share/bacula/query.sql" | # Файл с SQL-запитами | ||
WorkingDirectory = "/var/db/bacula" | # Робоча директорія | ||
PidDirectory = "/var/run" | # Директорія, в якій знаходиться файл з номером процесу | ||
Maximum Concurrent Jobs = 1 | # Максимальна кількість паралельних завдань | ||
Password = "********" | # Пароль для підключення консолі | ||
Messages = Daemon | # Ім'я ресурсу, що використовується для відправлення повідомлень, які не пов'язані з конкретним завданням | ||
} |
JobDefs { | # Шаблон завдання | ||
Name = "DefaultJob" | # Ім'я шаблона | ||
Type = Backup | # Тип завдання | ||
Level = Incremental | # Тип архівування | ||
Client = backup-fd | # Клієнт | ||
FileSet = "Full Set" | # Набір файлів, що архівуються | ||
Schedule = "WeeklyCycle" | # Розклад виконання завдання | ||
Storage = File | # Зберігач | ||
Messages = Standard | # Ресурс повідомлень | ||
Pool = Default | # Пул з томами | ||
Priority = 10 | # Пріоритет | ||
} |
Job { | # Визначення завдання | ||
Name = "Client1" | # Ім'я завдання | ||
Client = backup-fd | # Ім'я клієнта | ||
JobDefs = "DefaultJob" | # Використаний шаблон завдання | ||
Write Bootstrap = "/var/db/bacula/Client1.bsr" | # Записати файл початкового завантаження | ||
} |
FileSet { | # Набір файлів | ||
Name = "Localhost Set" | # Ім'я набору файлів (для серверу) | ||
Include { | # Включити: | ||
Options { | # Опції | ||
signature = MD5 | # Тип сигнатури | ||
compression = GZIP | # Стискання файлів | ||
} | |||
File = /boot | # Директорії, що підлягають архівуванню | ||
File = /etc | |||
File = /usr/local | |||
} | |||
Exclude { | # Виключити: | ||
File = /usr/local/man | # Директорія, що не підлягає архівуванню | ||
} | |||
} |
Для комп'ютерів з ОС Windows, де потрібно архівувати документи Microsoft Office та OpenOffice.org, секція FileSet матиме наступний вигляд:
FileSet { | |||
Name = "WinDiscCDoc" | # Ім'я набору файлів | ||
Include { | |||
Options { | compression = GZIP | # Стискання файлів | |
signature = MD5 | # Тип сигнатури | ||
portable = no | # Не зберігати атрибути NTFS | ||
noatime = yes | # Читати файли без зміни часу звернення до файлу | ||
IgnoreCase = yes | # Ігнорувати регістр букв | ||
wildfile = "*.doc" | # Шаблон для файлів | ||
wildfile = "*.xls" | |||
wildfile = "*.rtf" | |||
wildfile = "*.ppt" | |||
wildfile = "*.csv" | |||
wildfile = "*.odt" | |||
wildfile = "*.ods" | |||
wildfile = "*.odp" | |||
wildfile = "*.odg" | |||
wildfile = "*.odb" | |||
} | |||
File = "C:/" | # Директорії, що підлягають архівуванню | ||
File = "D:/" | |||
File = "E:/" | |||
} | |||
} |
Schedule { | # Розклад виконання завдання | ||
Name = "WeeklyCycle" | # Ім'я розкладу | ||
Run = Full 1st sun at 23:05 | # Виконувати повне архівування в першу неділю кожного місяця в 23:05 | ||
Run = Differential 2nd-5th sun at 23:05 | # Виконувати диференційне архівування кожної неділі, крім першої в 23:05 | ||
Run = Incremental mon-sat at 23:05 | # Виконувати інкрементне архівування з понеділка по суботу в 23:05 | ||
} |
Client { | # Комп'ютер, файли якого будуть архівовані | ||
Name = backup-fd | # Ім'я Клієнта | ||
Address = 192.168.1.1 | # Адреса Клієнта | ||
FDPort = 9102 | # Порт, який прослуховує Клієнт | ||
Catalog = MyCatalog | # Каталог | ||
Password = "*********" | # Пароль | ||
File Retention = 30 days | # Термін зберігання в базі інформації про файли | ||
Job Retention = 6 months | # Термін зберігання в базі інформації про завдання | ||
AutoPrune = yes | # Видаляти записи, термін зберігання яких скінчився | ||
} |
Storage { | # Зберігач | ||
Name = File | # Ім'я Зберігача | ||
Address = 192.168.1.1 | # Адреса Зберігача | ||
SDPort = 9103 | # Порт, який прослуховує Зберігач | ||
Password = "*********" | # Пароль | ||
Device = FileStorage | # Пристрій, визначений в bacula-sd.conf | ||
Media Type = File | # Тип носія, визначений в bacula-sd.conf | ||
} |
Catalog { | # Каталог | ||
Name = MyCatalog | # Ім'я Каталога | ||
dbname = "bacula"; | # Ім'я бази даних Каталога | ||
dbuser = "bacula"; | # Користувач | ||
dbpassword = "*****" | # Пароль | ||
} |
Messages { | # Ресурс повідомлень | ||
Name = Daemon | # Ім'я Відправника | ||
mailcommand = "/usr/local/sbin/bsmtp -h localhost -f \"\(Bacula\) \<%r\>\" -s \"Bacula daemon message\" %r" |
# Команда відправлення повідомлень | ||
mail = root@localhost = all, !skipped | # Відправляти на цю поштову адресу всі повідомлення, за винятком пропущених | ||
console = all, !skipped, !saved | # Виводити на консоль повідомлення, за винятком пропущених та збережених | ||
append = "/var/db/bacula/log" = all, !skipped | # Записувати повідомлення у файл, за винятком пропущених | ||
} |
Bacula підтримує наступні типи повідомлень:
- інформаційне (info);
- попередження (warning);
- помилка (error);
- критична помилка (fatal);
- зупинка (terminate);
- перелік пропущених файлів (skipped);
- перелік файлів, збережених без помилок (saved);
- перелік файлів, які не вдалося зберегти (notsaved);
- перелік відновлених файлів (restored);
- потреба підключити новий том (mount);
- помилка авторизації (security);
- усі типи (all).
Для відправлення повідомлень Bacula використовує власний засіб — bsmtp, який може надсилати повідомлення не тільки локальним користувачам, а й на віддалений smtp-сервер.
Pool { | # Пул томів | ||
Name = Default | # Ім'я пулу | ||
Pool Type = Backup | # Тип пулу | ||
Recycle = yes | # Використовувати очищені томи | ||
AutoPrune = yes | # Помічати старі томи на очищення | ||
Volume Retention = 365 days | # Термін зберігання тому | ||
} |
Console { | # Консоль керування | ||
Name = backup-mon | # Ім'я консолі | ||
Password = "********" | # Пароль | ||
CommandACL = status, .status | # Команди, які можна виконувати на цій консолі | ||
} |
Для кожного комп'ютера, файли якого архівуються, потрібно створити окремий ресурс Job, Client, а найчастіше також й FileSet та Pool. Це спричиняє розростання конфігураційного файлу до досить великих розмірів, тому зручніше описувати ці ресурси в окремому файлі, який включається до bacula-dir.conf за допомогою директиви @. Наприклад, ресурси Job, Client, FileSet, Pool для комп'ютера, на якому встановлена система Bacula, можна помістити у файл localhost.conf, та включити його до bacula-dir.conf:
@/usr/local/etc/bacula.conf/localhost.conf
Налаштовування Зберігача
Зберігач приймає данні від Клієнтів і зберігає їх на фізичному носії: у файлі, на магнітній стрічці, CD, DVD. Параметри Зберігача описуються в конфігураційному файлі bacula-sd .conf:
Storage { | # Параметри Зберігача | ||
Name = backup-sd | # Ім'я Зберігача | ||
SDPort = 9103 | # Порт, який прослуховує Зберігач | ||
WorkingDirectory = "/var/db/bacula" | # Робоча директорія | ||
Pid Directory = "/var/run" | # Директорія, в якій знаходиться файл з номером процесу | ||
Maximum Concurrent Jobs = 20 | # Максимальна кількість паралельних завдань | ||
} |
Director { | # Директор, завдання якого виконуватиме Клієнт | ||
Name = backup-dir | # Ім'я Директора | ||
Password = "*********" | # Пароль | ||
} |
Device { | # Пристрій зберігання томів | ||
Name = FileStorage | # Ім'я | ||
Media Type = File | # Тип носія (файл) | ||
Archive Device = /var/bacula | # Шлях до пристрою | ||
LabelMedia = yes; | # Надавати томам позначки | ||
Random Access = yes; | # Пристрій з позиціюванням | ||
AutomaticMount = yes; | # Автоматичне підключення тому | ||
RemovableMedia = no; | # Чи є пристрій змінним? | ||
AlwaysOpen = no; | # Блокувати добування пристрою | ||
} |
Messages { | # Ресурс повідомлень | ||
Name = Standard | # Ім'я ресурсу | ||
director = backup-dir = all | # Відсилати усі повідомлення за допомогою ресурсу Standard, що описаний в bacula-dir.conf | ||
} |
Налаштовування Клієнта
Параметри Клієнта описуються в конфігураційному файлі bacula-fd.conf:
Director { | # Директор, завдання якого виконуватиме Клієнт | ||
Name = backup-dir | # Ім'я Директора | ||
Password = "**********" | # Пароль | ||
} |
FileDaemon { | # Параметри Клієнта | ||
Name = backup-fd | # Ім'я Клієнта | ||
FDport = 9102 | # Порт, який прослуховує Клієнт | ||
WorkingDirectory = /var/db/bacula | # Робоча директорія | ||
Pid Directory = /var/run | # Директорія, в якій знаходиться файл з номером процесу | ||
Maximum Concurrent Jobs = 20 | # Максимальна кількість паралельних завдань | ||
} |
Messages { | # Ресурс повідомлень | ||
Name = Standard | # Ім'я ресурсу | ||
director = backup-dir = all, !skipped, !restored | # Відсилати усі повідомлення за допомогою ресурсу Standard, що описаний в bacula-dir.conf, крім переліку пропущених та відновлених файлів | ||
} |
Для Windows-клієнта winbacula всі необхідні параметри вводяться інтерактивно, під час встановлення. Тому його конфігураційний файл, зазвичай, редагувати не потрібно.
Налаштовування Консолі керування
Параметри Консолі керування описуються в конфігураційному файлі bconsole.conf, який складається лише з одної секції Director:
Director { | # Параметри доступу до Директора | ||
Name = wmware-dir | # Ім'я Директора | ||
DIRport = 9101 | # Порт для зв'язку з Директором | ||
address = 192.168.1.1 | # Адреса Директора | ||
Password = "********" | # Пароль | ||
} |
Існують кілька Консолей керування для різних операційних систем (Windows, Linux, FreeBSD). Особливості використання цих консолей будуть розглянуті у наступній статті.
Висновки
Система резервування Bacula має достатньо гнучкі настроювання та дозволяє робити копії файлів і директорій, що розташовані на комп'ютерах локальної мережі з різними операційними системами.
Завдяки модульній структурі, Bacula може бути налаштована для використання як в невеликій локальній мережі так і в мережі масштабу підприємства.
Recent comments
13 years 4 weeks ago
13 years 6 weeks ago
13 years 40 weeks ago
13 years 47 weeks ago
14 years 32 weeks ago
15 years 4 weeks ago
15 years 10 weeks ago
15 years 15 weeks ago
15 years 17 weeks ago
15 years 32 weeks ago