Оглавление
- Bacula — решение для резервного копирования под Linux
- Процесс установки и настройки Bacula под Ubuntu 20
- Этап 1. Инсталляция Bacula на сервер
- Этап 2. Процесс настройки Bacula Storage
- Этап 3. Процесс настройки клиента Bacula File Daemon
- Этап 4. Процесс настройки Bacula Director и задач резервного копирования
- Этап 5. Процесс настройки консоли
- Выполнение резервного копирования в Bacula из консоли
- Процесс восстановления данных
- Заключение
Bacula — решение для резервного копирования под Linux
В каждодневной работе системного администратора есть необходимость в наличии удобной системы резервного копирования, ведь любой сбой на сервере может привести к потере ценных данных. Даже для рядового пользователя этот факт является серьезной проблемой, в случае же нарушения работы корпоративной сети компании — это может привести к серьезным убыткам.
Резервное копирование — процесс создания копии данных на резервный носитель.
В этой статье мы расскажем, как устанавливать и настраивать Bacula — наиболее популярное решение с открытым исходным кодом под Linux, которое разработано для корпоративного сектора.
Прежде всего отметим, что Bacula — это клиент-серверное решение, основные компоненты которого — Bacula Director, Bacula Storage, Bacula File Daemon. Ниже поясним детально про каждый из них.
Bacula Director (bacula-dir) — это главный компонент системы, назначение которого управлять всеми процессами резервирования и восстановления данных. Основной смысл этого сервиса в планировании и управлении задачами по резервному копированию (Job), а также в обслуживании Каталога (Catalog).
Bacula Storage (bacula-sd) — сервис, который представляет из себя хранилище, назначение которого, сохранять резервные копии на физическом носителе.
Bacula File Daemon (bacula-fd) — это клиент, который устанавливается на каждой машине, он выполняет резервное копирование (или восстановление и проверку данных) по запросу Bacula Director.
Также еще имеются такие важные сервисы, как Bacula Console и Catalog.
- Bacula Console (bconsole) — это специальная утилита для управления Bacula из командной строки, есть и другие ее варианты (под веб-интерфейс).
- Catalog — это БД для хранения информации о местонахождении всех зарезервированных файлов в резервных копиях и для обеспечения эффективной адресации к нужным файлам. Как правило, для Ubuntu поддерживаются следующие СУБД: PostgreSql и Postfix.
Все вышеперечисленные компоненты системы могут быть инсталлированы как на одном сервере, так и на разных компьютерах, однако, у каждого сервиса должна быть возможность доступа к другому сервису по сети.
Далее, мы расскажем, как произвести установку и настройку Bacula под Ubuntu 20.04.
Процесс установки и настройки Bacula под Ubuntu 20
Этап 1. Инсталляция Bacula на сервер
Покажем на примере, как установить Bacula на сервер, вместе с Bacula в Ubuntu 20.04 также будут установлены пакеты для работы с БД: PostgreSql и Postfix. Основная команда, с помощью которой можно установить Bacula, выглядит так:
sudo apt install bacula
Однако, нам для работы нужна всего одна из СУБД, например PostgreSql, тогда Postfix мы устанавливать не будем:
sudo apt install bacula postfix-
Далее установщик Bacula предложит нам создать базу данных, удобнее всего это сделать именно на этапе установки (выбираем yes в следующем экране процесса установки):
На следующем шаге выберем localhost, так как наша БД будет расположена на том же сервере, что и Bacula:
Сейчас можно задать пароль от нашей базы данных (например, R19031946d):
Итак, на этом шаге автоматически создана база данных пользователя и ее данные прописаны в конфигурационном файле.
Этап 2. Процесс настройки Bacula Storage
Для начала произведем настройки хранилища Bacula (Bacula Storage). Все основные параметры находятся в конфигурационном файле /etc/bacula/bacula-sd.conf. Этот файл состоит из следующих основных секций:
- Storage — содержит основные настройки хранилища (имя хранилища, IP адрес, порт и т.д.);
- Director — здесь прописываем настройки авторизации для управляющего сервиса (имя сервиса и пароль);
- Device — в этой секции настроим, каким именно способом будут храниться файлы на физическом диске и пропишем путь к папке, в которую они будут помещены;
- Messages — секция для настройки отправки сообщений.
Общий синтаксис для каждой секции:
имя_секции { параметр = значение }
Ниже приведем настройки конфигурационного файла для нашего случая, старый файл лучше не удалять, поэтому поместим его в _back следующей командой:
sudo mv /etc/bacula/bacula-sd.conf{,_back}
А теперь создадим новый конфигурационный файл со следующими секциями:
sudo nano /etc/bacula/bacula-sd.conf # Storage { Name = freehost-sd #имя хранилища, hostname+sd SDPort = 9103 #порт на котором оно доступно WorkingDirectory = "/var/lib/bacula" Pid Directory = "/run/bacula" Plugin Directory = "/usr/lib/bacula" Maximum Concurrent Jobs = 20 } Director { Name = freehost-dir #director сервис будет называться hostname+dir Password = "010101qwerty" } Messages { Name = Standard director = freehost-dir = all } Device { Name = freehost-files #имя устройства Media Type = File #устройство является файлом Archive Device = /backup #путь в файловой системе где хранятся резервные копии LabelMedia = yes; Random Access = Yes; #поддерживает произвольный доступ AutomaticMount = yes; RemovableMedia = no; #не съемный накопитель AlwaysOpen = no; #открывать накопитель только при необходимости Maximum Concurrent Jobs = 5 #максимальное количество одновременно работающих задач }
После завершения редактирования файла, проведем проверку его на ошибки:
sudo /usr/sbin/bacula-sd -t -c /etc/bacula/bacula-sd.conf
Если на экран не выводятся ошибки, то мы все сделали правильно и теперь можно перезагрузить сервис следующей командой:
sudo systemctl restart bacula-sd
Этап 3. Процесс настройки клиента Bacula File Daemon
Bacula File Daemon должен быть установлен на каждом компьютере, где будет производится резервное копирование, он предназначен для доступа к файлам на сервере.
Отредактируем конфигурационный файл следующим образом:
sudo nano /etc/bacula/bacula-fd.conf # Director { Name = freehost-dir #имя директора, который может сюда подключаться hostname+dir Password = "010101qwerty" } FileDaemon { Name = freehost-fd # название, используется при подключении, hostname+fd FDport = 9102 # порт, на котором программа ожидает подключения WorkingDirectory = /var/lib/bacula Pid Directory = /run/bacula Maximum Concurrent Jobs = 20 Plugin Directory = /usr/lib/bacula } Messages { Name = Standard director = freehost-dir = all, !skipped, !restored }
На следующем шаге, нужно проверить настройки на ошибки:
sudo /usr/sbin/bacula-fd -t -c /etc/bacula/bacula-fd.conf
Для того, чтобы все наши настройки вступили в силу, выполним перезапуск сервиса командой:
sudo systemctl restart bacula-sd
Этап 4. Процесс настройки Bacula Director и задач резервного копирования
Файл конфигурации Bacula Director находится здесь:
/etc/bacula/bacula-dir.conf
Рассмотрим основные секции этого конфигурационного файла и затем покажем его полную настройку. Можно поступить аналогичным образом, как при настройке Bacula Storage, т.е. старый файл с настройками переименовать, а нужные секции вписать уже в пустой файл.
Секция, необходимая для описания самого сервиса управления — это Director. JobDefs — эта секция включает в себя значения «по умолчанию», которые в будущем мы используем для создания задач (Job).
Примечание: В секции JobDefs используется специальный файл с метаданными (в формате bsr), содержащий данные в формате ASCII о местоположении файлов. Эта информация нужна, чтобы при необходимости можно было бы восстановить из резервной копии только отдельные (выбранные нами) файлы, не восстанавливая весь бэкап.
Секция Catalog служит для описания метода подключения к БД Postgresql, которая создана и уже настроена автоматически на первых этапах установки Bacula.
Секции Messages (имя ее Standart) и Console являются стандартными, в них можно ничего не менять (оставить значения «по умолчанию»).
На предыдущих этапах мы уже настроили хранилище freehost-sd и файловый демон freehost-fd, сейчас же завершим настройку конфигурационного файла Director (bacula-dir.conf), добавив в него несколько специальных секций для организации резервного копирования.
Секция Pool служит для хранения данных и описывает набор томов (Volume), здесь можно настроить параметры хранения томов данных для каждой рабочей машины.
Затем необходимо заполнить секцию Client, в ней мы укажем какой именно клиент мы будем использовать для обеспечения доступа к файлам, например, freehost-fd.
Разберемся детально с параметром Volume Retention (он уже встречался нам в настройке секции Pool), при настройке секции Client добавились еще такие опции:
- Job Retention — это период хранения информации о задачах, которые исполнены. Хранить такие данные можно достаточно долго, а вот после удаления этой информации, уже невозможно конкретно посмотреть, какие именно задачи и в какое время были выполнены.
- File Retention — это период хранения информации о местонахождении конкретных файлов. С помощью этой опции можно восстановить нужные нам файлы из резервной копии (а не всю копию).
- Volume Retention — необходим для хранения самих данных резервных копий. Если вы удалите его, то уже не сможете получить доступ к данным.
Секция FileSet служит для того, чтобы определить, какие именно файлы стоит поместить в резервную копию. В ней есть такой параметр File, в котором нужно указать путь к папке, которую мы будем помещать в резервную копию, например, папка /etc.
Секция Schedule предназначена для указания времени и расписания резервного копирования. Параметр Name можно задать произвольно, Run определяет время запуска резервной копии, можно задать несколько параметров Run для различных типов резервного копирования. Параметр Level нужен для определения уровней резервирования:
- Full — в резервную копию пишутся все файлы и каталоги, заданные в секции FileSet (без учета фактора их изменения).
- Incremental — резервируются конкретные файлы и каталоги из секции FileSet, которые претерпели изменения с момента последнего резервирования.
Синтаксис для указания формата времени следующий:
день at ЧЧ:ММ
месяц номер_недели день at ЧЧ:ММ
Например, если необходимо делать ежедневные копии, то указываем daily (каждый день), для указания конкретных дней недели используем sun, mon, the, wed, thu, fri, sat.
Чтобы указать номер недели, используем обозначения: 1st, 2st, 3st, 4st, 5st.
Указанные выше параметры объединим в задаче (Job). Пример получившегося конфигурационного файла см. ниже:
sudo nano /etc/bacula/bacula-dir.conf # Director { Name = freehost-dir #имя сервиса hostname+dir DIRport = 9101 #порт, на котором ожидает соединений сервис QueryFile = “/etc/bacula/scripts/query.sql” #файл с запросами SQL WorkingDirectory = “/var/lib/bacula” PidDirectory = “/run/bacula” Maximum Concurrent Jobs = 20 #максимальное количество одновременно выполняемых задач Password = “010101qwerty” #используется для подключения к сервису из консоли Messages = Standard DirAddress = 127.0.0.1 } Catalog { Name = default dbname = “bacula”; DB Address = “localhost”; dbuser = “bacula”; dbpassword = “R19031946d” } Messages { Name = Standard director = freehost-dir = all, !skipped, !restored } Console { Name = freehost-mon Password = “010101qwerty” CommandACL = status, .status ####################################################### #LocalBackup Job { Name = “LocalBackup” Type = Backup Level = Incremental Client = freehost-fd FileSet = “local” Schedule = “local” Messages = Standard Pool = LocalPool Priority = 10 Allow Duplicate Jobs = no Cancel Queued Duplicates = yes Cancel Running Duplicates = no } FileSet { Name = “local” Include { Options { signature = MD5 } File = /etc } } Pool { Catalog = default Name = LocalPool Pool Type = Backup Recycle = yes AutoPrune = yes Volume Retention = 40 days Recycle Oldest Volume = yes Purge Oldest Volume = yes Action On Purge = Truncate Maximum Volume Jobs=1 Maximum Volumes = 40 Label Format = “local-“ Storage = freehost-sd } Client { Name = freehost-fd Address = 127.0.0.1 FDPort = 9102 Catalog = default Password = “010101qwerty” AutoPrune = yes Maximum Concurrent Jobs = 1 } Storage { Name = freehost-sd Address = 127.0.0.1 SDPort = 9103 Password = “010101qwerty” Device = freehost-files Media Type = File Maximum Concurrent Jobs = 1 } Schedule { Name = “local” Run = Level=Full daily at 06:00 }
После завершения всех работ по настройке, проверим наш конфигурационный файл на ошибки командой:
sudo /usr/sbin/bacula-dir -t -c /etc/bacula/bacula-dir.conf
Если ошибок не обнаружено, то перезапустим сервис:
sudo systemctl restart bacula-dir
Этап 5. Процесс настройки консоли
На этом этапе необходимо произвести настройку консоли, для этого нам нужно отредактировать конфигурационный файл:
nano /etc/bacula/bconsole.conf
В данном файле всего одна секция, в ней нужно указать IP (на котором ожидает соединений Bacula Director) и пароль. Эти данные должны совпадать с настройками из файла /etc/bacula/bacula-dir.conf.
# Director { Name = freehost-dir #имя директора, должно совпадать с настроенным в директоре DIRport = 9101 # порт address = 127.0.0.1 # IP Password = "010101qwerty" }
После всех проведенных настроек, можно переходить к работе в консоли для выполнения резервного копирования.
Выполнение резервного копирования в Bacula из консоли
Сейчас проверим, как работает процесс резервного копирования в Bacula. Для этого загрузим консоль следующей командой:
sudo bconsole
После выполнения этой команды мы увидим окно с приглашением в виде *, см. на рис. ниже:
Чтобы запустить задачу резервного копирования, выполните команду run.
На данном этапе у нас только одна задача по резервному копированию, если же у вас их несколько, то нужно указать номер задачи. Как мы видим на скриншоте, задача поставлена в очередь. Результат выполнения задачи может быть получен в виде сообщения, для этого нужно выйти из консоли и заново войти, после этого вы увидите такое сообщение:
You have messages
Чтобы прочитать сообщение, можно воспользоваться командой:
messages
Также можно просто посмотреть список выполненных задач с помощью команды:
list jobs
Любая задача имеет свой ID и с помощью него возможно посмотреть всю детализацию по задаче:
list files jobid=12 list files jobid=13:
Процесс восстановления данных
На данном шаге попробуем восстановить данные, которые ранее мы поместили в резервную копию (например, папку /etc). Для этого создадим новую задачу (Job) в конфигурационном файле /etc/bacula/bacula-dir.conf.
#LocalRestore Job { Name = "LocalRestore" # имя задачи Type = Restore # означает, что эта задача используется для восстановления Client= "freehost-fd" # клиент для работы с файлами FileSet="local" # набор файлов для восстановления Storage = freehost-sd # хранилище Pool = LocalPool #пул Messages = Standard Where = /opt/restore # куда восстанавливать }
Сделанные изменения в файле необходимо сохранить и перезапустить сервис bacula-dir.
Далее, создадим папку, в которую будут записываться восстановленные данные.
sudo mkdir /opt/restore
Затем запустим консоль и выполним команду:
sudo bconsole restore
Далее, нужно указать конкретную задачу, которую вы собираетесь восстановить. На скриншоте выше приведены все способы, как это можно сделать, но для простоты лучше воспользоваться самым первым, который позволяет вывести на экран 20 последних задач.
К примеру, попробуем восстановить файлы из резервной копии (задача с ID 11), нажмем 3 и введем число 11 в консоли:
Сейчас будем использовать команды cd и ls для перемещения по виртуальной файловой системе, а также команды mark и unmark, чтобы отмечать или наоборот, снимать отметку с файлов, которые необходимо будет извлечь. После этого, нужно будет выполнить команду done.
На следующем этапе вам предстоит выбрать клиент для проведения процедуры восстановления. На экран будет выведена общая информация о предстоящем восстановлении, вам надо будет набрать yes, для того чтобы продолжить операцию.
После завершения операции восстановленные файлы можно будет посмотреть в папке /opt/restore.
Для восстановления файлов из последней сделанной резервной копии достаточно выполнить команду:
run LocalRestore
Заключение
В этой статье мы объяснили, как устанавливать и настраивать платформу для организации резервного копирования под Linux — Bacula. В качестве примера мы рассмотрели самый простой вариант — резервирование на сервере. В случае организации резервного копирования файлов в корпоративной сети, необходимо будет произвести установку клиента Bacula на каждом удаленном компьютере, и его IP-адрес прописать в конфигурационном файле Bacula Director.
На первый взгляд может показаться, что такое решение как Bacula, сложное в настройке и использовании, однако для корпоративной сети компании, Bacula — это оптимальный выбор для организации резервного копирования. С помощью нашей статьи, системный администратор легко и просто настроит все конфигурационные файлы, а если неудобно работать с консолью, то можно поискать аналогичные решения с веб-интерфейсом.
Кстати резервное копирование данных на нашем виртуальном хостинге реализовано именно при помощи Bacula. На данный момент наши сервера бекапов хранят более 100 Тб данных. При этом, если Вы пользуетесь нашим хостингом, можете увидеть, что восстановление данных обычно занимает до 5 минут.
Специалисты компании FREEhost.UA всегда помогут вам с инсталляцией Bacula на вашем VDS или выделенный сервер, окажут содействие в настройке конфигурационных файлов и организации процесса резервного копирования в вашей компании.
Мы что-то не указали или в чем-то ошиблись?
Напишите об этом в комментариях и мы с удовольствием на них ответим. Также просим Вас свои оценки.
Подписывайтесь на наш телеграмм - канал t.me/freehostua, чтобы быть в курсе новых полезных материалов. Смотрите наш Youtube канал на youtube.com/freehostua.
Дата: 08.10.2021 Автор: Евгений
|
|
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus