Восстановление файла из Bacula

Запускаем консольную утилиту "bconsole":

*restore
Первым делом определяемся, что будем восстанавливать. 
Все наборы резервных копий Bacula обозначены уникальным номером задания JobId, которым они были созданы.
Если JobID не известен, то его можно определить следующим путем:

First you select one or more JobIds that contain files 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): 3
Требуемый номер задания можно узнать выбрав пунк 1.

+-------+--------+---------------------+----------+----------+---------------+

| jobid | client | starttime | joblevel | jobfiles | jobbytes |
+-------+--------+---------------------+----------+----------+---------------+
| 9799 | dmps1 | 2016-08-29 23:10:09 | F | 1 | 404610227 |
| 9794 | email2 | 2016-08-29 23:06:45 | I | 1844 | 427070661 |
| 9793 | email1 | 2016-08-29 23:06:21 | I | 1960 | 1008859846 |
| 9788 | relay2 | 2016-08-29 23:05:39 | I | 97 | 236340571 |
| 9787 | relay1 | 2016-08-29 23:05:31 | I | 82 | 252168157 ||
+-------+--------+---------------------+----------+----------+---------------+
Теперь JobId нам уже известен - сообщаем его системе восстановления (в примере это число "9788"):
Enter JobId(s), comma separated, to restore: 9788

Сразу после этого утилита находит набор резервных копий, закреплённый за нашим JobId.
И строит дерево виртуальной файловой системы:

Building directory tree for JobId(s) 9788 ... ++++++++++++++++++++++++++++++++++++++++++
85 files inserted into the tree.

Теперь выбераем, что хотим извлечь из резервной копии.
Тут всё просто: ходим по виртуальной файловой системы и помечаем объекты, подлежащие восстановлению:

cwd is: /
$ ls
etc/
home
srvs/
storage1
usr/
var/
$
$ cd /var/log
cwd is: /var/log/
$ mark maillog
1 file marked.

После того, как подборка объектов для восстановления успешно сформирована, завершаем процедуру, призывая утилиту перейти к следующему этапу:

$ done

Следующим этапом подсистема восстановления запросит у нас, куда мы собираемся выкладывать извлекаемые из резервной копии файлы.
Для упрощения процедуры будет выведен весь перечень уже определённых клиентских заданий:

Bootstrap records written to /var/db/bacula/dmps1-1.local-dir.restore.1.bsr
The job will require the following
Volume(s) Storage(s) SD Device(s)
===========================================================================

relay2.0007 File FileStorage
Volumes marked with "*" are online.

1 file selected to be restored.
Defined Clients:
1: dmps1
2: dmps1-1.local-fd
3: email1
4: email2
5: relay1
6: relay2
Select the Client (1-14): 1

Если нужно вывести файлы непосредственно на удалённую машину клиента, для которого уже имеется задача резервного копирования,
то выбираем из списка выше соответствующий набор правил.
На случай, если требуется вывести восстанавливаемые объекты в файловую систему,
доступную непосредственно с сервера резервного копирования,
у нас имеется первое правило, которое описано на этапе настройки сервиса (Bacula считает ошибкой отсутствие хотя бы одной задачи типа restore).

Выбираем набор правил "dmps1". После выбора набора правил клиента нам покажут перечень параметров задания, связанного с ним.

Run Restore job
JobName: RestoreFiles
Bootstrap: /var/db/bacula/dmps1-1.local-dir.restore.1.bsr
Where: /srvs/bacula/restores
Replace: always
FileSet: dmps1
Backup Client: dmps1
Restore Client: dmps1
Storage: File
When: 2016-08-30 15:00:41
Catalog: MyCatalog
Priority: 10
Plugin Options: *None*
OK to run? (yes/mod/no):yes
Теперь только дождёмся завершения запущенного задания.
*status
Status available for:
1: Director
2: Storage
3: Client
4: All
Select daemon type for status (1-4): 1

Running Jobs:
JobId Level Name Status
===================================
9800 1 63 OK 30-Aug-16 15:08 RestoreFiles
По завершению задачи обнаруживаем помеченные выше к восстановлению файлы в выбранной нами директории "/srvs/bacula/restores/".

 

unix-way