Bacula: различия между версиями
Строка 346: | Строка 346: | ||
==== | ==== | ||
</pre> | </pre> | ||
=== Востановление из резервной копии === | |||
*restore | |||
Automatically selected Catalog: MyCatalog | |||
Using Catalog "MyCatalog" | |||
First you select one or more JobIds that contain files | |||
to be restored. You will be presented several methods | |||
of specifying the JobIds. Then you will be allowed to | |||
select which files from those JobIds are to be restored. | |||
To select the JobIds, you have the 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: Select the most recent backup for a client | |||
6: Select backup for a client before a specified time | |||
7: Enter a list of files to restore | |||
8: Enter a list of files to restore before a specified time | |||
9: Find the JobIds of the most recent backup for a client | |||
10: Find the JobIds for a backup for a client before a specified time | |||
11: Enter a list of directories to restore for found JobIds | |||
12: Select full restore to a specified Job date | |||
13: Cancel | |||
Select item: (1-13): 1 | |||
+-------+--------+---------------------+----------+----------+---------------+ | |||
| JobId | Client | StartTime | JobLevel | JobFiles | JobBytes | | |||
+-------+--------+---------------------+----------+----------+---------------+ | |||
| 2 | fd2 | 2017-07-10 16:22:47 | F | 49995 | 1194397517 | | |||
+-------+--------+---------------------+----------+----------+---------------+ | |||
To select the JobIds, you have the 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: Select the most recent backup for a client | |||
6: Select backup for a client before a specified time | |||
7: Enter a list of files to restore | |||
8: Enter a list of files to restore before a specified time | |||
9: Find the JobIds of the most recent backup for a client | |||
10: Find the JobIds for a backup for a client before a specified time | |||
11: Enter a list of directories to restore for found JobIds | |||
12: Select full restore to a specified Job date | |||
13: Cancel | |||
Select item: (1-13): 3 | |||
Enter JobId(s), comma separated, to restore: 2 | |||
You have selected the following JobId: 2 | |||
Building directory tree for JobId(s) 2 ... ++++++++++++++++++++++++++++++++++++++++++++ | |||
44,444 files inserted into the tree. | |||
You are now entering file selection mode where you add (mark) and | |||
remove (unmark) files to be restored. No files are initially added, unless | |||
you used the "all" keyword on the command line. | |||
Enter "done" to leave this mode. | |||
cwd is: / | |||
$ mark etc | |||
1,933 files marked. | |||
$ done | |||
Bootstrap records written to /var/lib/bacula/dir.restore.1.bsr | |||
Bootstrap records written to /var/lib/bacula/dir.restore.1.bsr | |||
The Job will require the following (*=>InChanger): | |||
Volume(s) Storage(s) SD Device(s) | |||
=========================================================================== | |||
b0001 File FileStorage | |||
Volumes marked with "*" are in the Autochanger. | |||
1,933 files selected to be restored. | |||
Defined Clients: | |||
1: fd | |||
2: fd2 | |||
Select the Client (1-2): 2 | |||
Using Catalog "MyCatalog" | |||
Run Restore job | |||
JobName: RestoreFiles | |||
Bootstrap: /var/lib/bacula/dir.restore.1.bsr | |||
Where: /tmp/bacula-restores | |||
Replace: Always | |||
FileSet: Full Set | |||
Backup Client: fd2 | |||
Restore Client: fd2 | |||
Storage: File | |||
When: 2017-07-10 16:33:04 | |||
Catalog: MyCatalog | |||
Priority: 10 | |||
Plugin Options: | |||
OK to run? (yes/mod/no): yes | |||
Job queued. JobId=3 | |||
* | |||
== Ссылки == | == Ссылки == |
Версия от 16:34, 10 июля 2017
Бэкапы обстоятельно
Первым делом стоит понять, что Bacula — сложный продукт, пригодный для множества ситуаций, но за это приходится платить существенным вложением времени в освоение базовых вещей и соответствующее конфигурирование (отведите хотя бы неделю на базовое освоение и планирование тестовой инсталяции).
Если требуется создавать простую резервную копию — возможно, достаточно просто tar, rsync или несложных систем вроде rdiff-backup или bontmia. Но если надо работать с несколькими клиентами, стораджами, наборами данных, расписаниями бэкапа — лучше сразу посмотреть на bacula.
Дистрибутив
Существует бета-версия дистрибутива Bran Backup, созданная Станиславом Иевлевым (inger@) и Виталием Кузнецовым (vitty@). Она представляет собой удобный инсталятор Bacula на базе ALT Linux. Дистрибутивы для различных архитектур лежат здесь. В настоящее время статус этих версий: Бета
Планируемые доработки
- Доработать branding
- Реализовать возможность удобной настройки шифрования передаваемых данных и получившихся архивов
- Реализовать возможность восстановления из архива
Базовая настройка Bacula
Рассмотрим минимальную установку сервера bacula.
Установим необходимые пакеты:
На сервере:
# apt-get install bacula7-common bacula7-console bacula7-director-common bacula7-director-mysql bacula7-storage mt-st
\
На клиенте:
# apt-get install bacula7-client
Настройка базы данных MySQL
Запустим сервис и добавим его в автозагрузку:
# systemctl start mysqld # systemctl enable mysqld
Подключимся к MySQL:
# mysql -u root -p
Создадим базу bacula:
mysql> CREATE DATABASE `bacula`;
Создадим пользователя bacula с паролем "Pa$$word":
mysql> CREATE USER 'bacula'@'localhost' IDENTIFIED BY 'Pa$$word';
Дадим пользователю права на базу:
mysql> GRANT ALL PRIVILEGES ON `bacula`.* TO 'bacula'@'localhost'; mysql> FLUSH PRIVILEGES;
Для создания необходимых таблиц существуют скрипт:
# /usr/share/bacula/scripts/make_mysql_tables
Настройка Director
За настройку Bacula Director отвечает файл /etc/bacula/bacula-dir.conf:
Director { Name = dir # Имя DIRport = 9101 # Порт который будет слушать Director QueryFile = "/usr/share/bacula/scripts/query.sql" WorkingDirectory = "/var/lib/bacula" PidDirectory = "/var/run/bacula" Maximum Concurrent Jobs = 1 @/etc/bacula/bacula-dir-password.conf # Файл с паролем для доступа к Director Messages = Daemon } # Параметры каталога Catalog { Name = MyCatalog # Имя каталога dbname = bacula # Имя базы данных user = bacula # Имя пользователя базы данных password = "Pa$$word" # Пароль пользователя базы данных } # Дальнейшие строчки подгружают конфигурационные файлы из подкаталогов job.d fileset.d schedule.d client.d storage.d messages.d pool.d @|"sh -c 'for f in /etc/bacula/job.d/*.conf ; do echo @${f} ; done'" @|"sh -c 'for f in /etc/bacula/fileset.d/*.conf ; do echo @${f} ; done'" @|"sh -c 'for f in /etc/bacula/schedule.d/*.conf ; do echo @${f} ; done'" @|"sh -c 'for f in /etc/bacula/client.d/*.conf ; do echo @${f} ; done'" @|"sh -c 'for f in /etc/bacula/storage.d/*.conf ; do echo @${f} ; done'" @|"sh -c 'for f in /etc/bacula/messages.d/*.conf ; do echo @${f} ; done'" @|"sh -c 'for f in /etc/bacula/pool.d/*.conf ; do echo @${f} ; done'"
Описание хранилищ
В каталоге storage.d находятся конфигурационные файлы хранилищ к которым director имеет доступ:
Storage { Name = File # Имя хранилища Address = 10.10.50.49 # IP или FQN хранилища (если указать 127.0.0.1, то будет доступен только локальный backup) SDPort = 9103 # Порт @/etc/bacula/bacula-sd-password.conf # Пароль для доступа к хранилищу Device = FileStorage Media Type = File }
Описание наборов файлов
В каталоге fileset.d находятся описания списков файлов для резервирования:
catalog.conf: # Описывает резервирование дампа базы данных bacula FileSet { Name = "Catalog" Include { Options { signature = MD5 } File = /var/lib/bacula/bacula.sql } }
fullset.conf: # Полный бэкап системы FileSet { Name = "Full Set" Include { # Какие файлы включать Options { signature = MD5 } File = / } Exclude { # Какие файлы не включать в бэкап File = /proc File = /sys File = /dev File = /tmp File = /.journal File = /.fsck } }
Описание задач
В каталоге job.d описываются задания резервирования.
backupcatalog.conf - Делает дамп базы и резервирует его:
Job { Name = "BackupCatalog" # Имя JobDefs = "DefaultJob" # Используемый шаблон Level = Full FileSet="Catalog" # Список файлов для бэкапа Schedule = "WeeklyCycleAfterBackup" # Расписание RunBeforeJob = "/usr/share/bacula/scripts/make_catalog_backup" # Скрипт выполняемый до бэкапа (создает дамп базы) RunAfterJob = "/usr/share/bacula/scripts/delete_catalog_backup" # Скрипт выполняемый после бэкапа (удаляет дамп базы) Write Bootstrap = "/var/lib/bacula/BackupCatalog.bsr" # файл необходимый для востановления Priority = 11 # Очередность выполнения }
bacula.conf - делает полный бэкап:
Job { Name = "BackupFullSet" JobDefs = "DefaultJob" Schedule = "WeeklyCycle" Write Bootstrap = "/var/lib/bacula/Client1.bsr" }
defaultjob.conf - описывает параметры задачи по умочанию:
JobDefs { Name = "DefaultJob" # Имя Type = Backup # Тип Level = Incremental # Вид бэкапа Client = fd # Клиент с которого нужно сделать бэкап FileSet = "Full Set" # Список файлов Storage = File # Хранилище Messages = Standard Pool = Default Priority = 10 # Приоритет }
restore.conf - восстанавливает файлы:
Job { Name = "RestoreFiles" # Имя задачи Type = Restore # Тип Client=fd # Клиент на котором востанавливать файлы FileSet="Full Set" # Набор файлов Storage = File # Хранилище Pool = Default Messages = Standard Where = /tmp/bacula-restores # Папка куда востанавливать файлы }
Описание пулов
Пул объединяет в себе несколько томов, чтобы отдельная резервная копия не была ограничена объемом тома.
Том это отдельная единица в которую ведется запись, может быть файлом или ленточкой.
default.conf - описывает пул по умолчанию:
Pool { Name = Default # Имя Pool Type = Backup # Тип Recycle = yes # Разрешает bacula удалять задания из томов AutoPrune = yes # Разрешает bacula очищать тома Volume Retention = 365 days # Время в течении которого bacula не будет очищать том LabelFormat = "b" # Формат меток (в случае с файлами - имена файлов) }
Описание клиентов
В файле client1.conf описан локальный клиент:
Client { Name = fd # Имя клиента Address = 127.0.0.1 # IP или FQN FDPort = 9102 # Порт Catalog = MyCatalog # Используемый каталог @/etc/bacula/bacula-fd-password.conf # Пароль для доступа к клиенту File Retention = 30 days # Срок хранения метаданных о файлах Job Retention = 6 months # Срок хранения метаданных о задачах AutoPrune = yes # Автоматическое удаление устаревших метаданных }
Добавим удаленного клиента с IP 10.10.50.50, для этого создадим файл client2.conf следующего содержания:
Client { Name = fd2 Address = 10.10.50.50 FDPort = 9102 Catalog = MyCatalog Password = "Pa$$wordClient2" File Retention = 30 days Job Retention = 6 months AutoPrune = yes }
Автозапуск сервиса
Запустим и добавим в автозапуск сервис:
# systemctl start bacula-dir # systemctl enable bacula-dir
Настройка Storage
Основной файл конфигурации хранилищ находится это /etc/bacula/bacula-sd.conf, также к нему присоединяются все файлы из каталога device.d
По умочанию этот файл выглядит так:
Storage { Name = sd # Имя хранилища SDPort = 9103 # Порт WorkingDirectory = "/var/lib/bacula" Pid Directory = "/var/run/bacula" Maximum Concurrent Jobs = 20 } Director { Name = dir # Имя director, который может подсоединяться к этому хранилищу @/etc/bacula/bacula-sd-password.conf # Файл с паролем к хранилищу } @|"sh -c 'for f in /etc/bacula/device.d/*.conf ; do echo @${f} ; done'" Messages { Name = Standard director = dir = all }
В каталоге device.d находится файл с описанием устройства:
Device { Name = FileStorage # Имя устройства Media Type = File # Тип устройства Archive Device = /srv/backup # Папка для хранения LabelMedia = yes; Random Access = Yes; AutomaticMount = yes; RemovableMedia = no; AlwaysOpen = no; }
Каталог /srv/backup должнен существовать и принадлежать пользователю bacula:
# mkdir /srv/backup # chown bacula:bacula /srv/backup
Запустим и добавим в автозагрузку сервис:
# systemctl start bacula-sd # systemctl enable bacula-sd
Настройка File Daemon
Установим необходимые пакеты:
# apt-get install bacula7-client
Конфигурационный файл клиента находится по адресу /etc/bacula/bacula-fd.conf:
# Список directors, которые могут подключаться к клиенту Director { Name = dir Password = "Pa$$wordClient2" } FileDaemon { Name = fd2 FDport = 9102 WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Maximum Concurrent Jobs = 20 }
Запустим и добавим в автозагрузку сервис:
# systemctl start bacula-fd # systemctl enable bacula-fd
Проверка работоспособности
Для управления bacula используется специальная утилита bconsole.
# bconsole Connecting to Director 127.0.0.1:9101 1000 OK: 102 dir Version: 7.4.7 (16 March 2017) Enter a period to cancel a command.
Для проcмотра статуса всех компонентов введем status:
*status Status available for: 1: Director 2: Storage 3: Client 4: Scheduled 5: All Select daemon type for status (1-5): 5
Создание резервной копии
# bconsole Connecting to Director 127.0.0.1:9101 1000 OK: 102 dir Version: 7.4.7 (16 March 2017) Enter a period to cancel a command. *run Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog" A job name must be specified. The defined Job resources are: 1: BackupCatalog 2: BackupFullSet 3: RestoreFiles Select Job resource (1-3): 2 Run Backup job JobName: BackupFullSet Level: Incremental Client: fd FileSet: Full Set Pool: Default (From Job resource) Storage: File (From Job resource) When: 2017-07-10 16:00:54 Priority: 10 OK to run? (yes/mod/no): mod Parameters to modify: 1: Level 2: Storage 3: Job 4: FileSet 5: Client 6: When 7: Priority 8: Pool 9: Plugin Options Select parameter to modify (1-9): 5 The defined Client resources are: 1: fd 2: fd2 Select Client (File daemon) resource (1-2): 2 Run Backup job JobName: BackupFullSet Level: Incremental Client: fd2 FileSet: Full Set Pool: Default (From Job resource) Storage: File (From Job resource) When: 2017-07-10 16:00:54 Priority: 10 OK to run? (yes/mod/no): yes Job queued. JobId=1
За ходом выолнения можно наблюдать выбрав статус director:
# bconsole *status Status available for: 1: Director 2: Storage 3: Client 4: Scheduled 5: All Select daemon type for status (1-5): 1 dir Version: 7.4.7 (16 March 2017) x86_64-alt-linux-gnu redhat Daemon started 10-ию-2017 16:22, conf reloaded 10-июл-2017 16:22:18 Jobs: run=0, running=1 mode=0 Heap: heap=389,120 smbytes=71,240 max_bytes=71,612 bufs=249 max_bufs=255 Scheduled Jobs: Level Type Pri Scheduled Job Name Volume =================================================================================== Incremental Backup 10 10-ию-2017 23:05 BackupFullSet b0001 Full Backup 11 10-ию-2017 23:10 BackupCatalog b0001 ==== Running Jobs: Console connected at 10-ию-2017 16:22 JobId Type Level Files Bytes Name Status ====================================================================== 2 Back Full 0 0 BackupFullSet is running ==== No Terminated Jobs. ====
Востановление из резервной копии
- restore
Automatically selected Catalog: MyCatalog Using Catalog "MyCatalog"
First you select one or more JobIds that contain files to be restored. You will be presented several methods of specifying the JobIds. Then you will be allowed to select which files from those JobIds are to be restored.
To select the JobIds, you have the 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: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Select full restore to a specified Job date 13: Cancel
Select item: (1-13): 1 +-------+--------+---------------------+----------+----------+---------------+ | JobId | Client | StartTime | JobLevel | JobFiles | JobBytes | +-------+--------+---------------------+----------+----------+---------------+ | 2 | fd2 | 2017-07-10 16:22:47 | F | 49995 | 1194397517 | +-------+--------+---------------------+----------+----------+---------------+ To select the JobIds, you have the 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: Select the most recent backup for a client 6: Select backup for a client before a specified time 7: Enter a list of files to restore 8: Enter a list of files to restore before a specified time 9: Find the JobIds of the most recent backup for a client 10: Find the JobIds for a backup for a client before a specified time 11: Enter a list of directories to restore for found JobIds 12: Select full restore to a specified Job date 13: Cancel
Select item: (1-13): 3 Enter JobId(s), comma separated, to restore: 2 You have selected the following JobId: 2
Building directory tree for JobId(s) 2 ... ++++++++++++++++++++++++++++++++++++++++++++ 44,444 files inserted into the tree.
You are now entering file selection mode where you add (mark) and remove (unmark) files to be restored. No files are initially added, unless you used the "all" keyword on the command line. Enter "done" to leave this mode.
cwd is: / $ mark etc 1,933 files marked. $ done Bootstrap records written to /var/lib/bacula/dir.restore.1.bsr Bootstrap records written to /var/lib/bacula/dir.restore.1.bsr
The Job will require the following (*=>InChanger):
Volume(s) Storage(s) SD Device(s)
===============================================================
b0001 File FileStorage
Volumes marked with "*" are in the Autochanger.
1,933 files selected to be restored.
Defined Clients:
1: fd 2: fd2
Select the Client (1-2): 2 Using Catalog "MyCatalog" Run Restore job JobName: RestoreFiles Bootstrap: /var/lib/bacula/dir.restore.1.bsr Where: /tmp/bacula-restores Replace: Always FileSet: Full Set Backup Client: fd2 Restore Client: fd2 Storage: File When: 2017-07-10 16:33:04 Catalog: MyCatalog Priority: 10 Plugin Options: OK to run? (yes/mod/no): yes Job queued. JobId=3