リストア手順


リストアの手順を解説します。
リストアを実行する方法はbconsoleやbatなどツールを使ってリストアを実行します。

今回はbconsoleでリストアを実行する手順を解説します。

bconsole起動

コマンドでbconsoleを起動します。

# bconsole
Connecting to Director localhost:9101
1000 OK: 1 bacula-dir Version: 7.0.5 (28 July 2014)
Enter a period to cancel a command.
*

上記の様に表示されてコマンドプロンプトが「*」になったらbconsoleの起動は成功です。

リストア実行

bconsoleが起動できたら、リストアを実行していきましょう。
restoreコマンドを実行します。

* 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): 5

リストア方式を選びます。
直近のデータを使用するので「5」を入力し「Enterキー」を押下します。

次にFile Setを聞かれますので今回は「2」のFull Setを選んで「Enterキー」を押下します。

Automatically selected Client: bacula-fd
The defined FileSet resources are:
     1: Catalog
     2: Full Set
Select FileSet resource (1-2): 2

すると自動的に直近のバックアップデータが選択されます。

+-------+-------+----------+------------+---------------------+------------+
| JobId | Level | JobFiles | JobBytes   | StartTime           | VolumeName |
+-------+-------+----------+------------+---------------------+------------+
|     4 | F     |    1,118 | 19,744,852 | 2016-03-16 16:11:19 | Vol-0001   |
+-------+-------+----------+------------+---------------------+------------+
You have selected the following JobId: 4

Building directory tree for JobId(s) 4 ...  +++++++++++++++++++++++++++++++++++++++++++
998 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: /
$

バックアップデータが選択されてコマンドプロンプトが「$」になったらリストアの準備は完了です。

ではいよいよリストアを実行します。
今回の例では「/etc」ディレクトリ配下をすべてバックアップを取ったものからリストアします。
/etcをすべてリストアすることも可能ですし、ファイルを選んで特定のファイルのみリストアすることも可能です。

まず現在の場所を確認します。
Linuxコマンドと同様に「pwd」と「ls」で確認します。

$ pwd
cwd is: /
$ ls
etc/
$

上記の結果から/etcの直下にいることがわかります。

次にリストアするファイルを選択します。ファイルの選択は「mark」コマンドを使用します。
対象のディレクトリまで移動するのは「cd」コマンドで移動します。Linuxに慣れている方なら特に問題ないと思います。
ファイルを見つけたら「mark <ファイル名>」で選択します。

markコマンドは最終的にリストアするまで、何ファイルでも追加可能です。

$ cd yum.repos.d/
cwd is: /etc/yum.repos.d/
$ ls
CentOS-Base.repo
CentOS-CR.repo
CentOS-Debuginfo.repo
CentOS-Media.repo
CentOS-Sources.repo
CentOS-Vault.repo
CentOS-fasttrack.repo
epel-bacula7.repo
$ mark CentOS-Base.repo
1 file marked.
mark epel-bacula7.repo
1 file marked.
$

上記の例ですと「/etc/yum.repo.d」に移動しリストア対象として「CentOS-Base.repo」を選択し、その後さらにリストア対象として「epel-bacula7.repo」を追加しています。

ちなみにディレクトリを全て選択する場合は「mark *」となります。

選択したファイルをリストアします。
「done」コマンドで実行します。

$ done
Bootstrap records written to /var/spool/bacula/bacula-dir.restore.1.bsr

The Job will require the following (*=>InChanger):
   Volume(s)                 Storage(s)                SD Device(s)
===========================================================================

    Vol-0001                  File1                     FileChgr1               

Volumes marked with "*" are in the Autochanger.


2 files selected to be restored.

Using Catalog "MyCatalog"
Run Restore job
JobName:         RestoreFiles
Bootstrap:       /var/spool/bacula/bacula-dir.restore.1.bsr
Where:           /tmp/bacula-restores
Replace:         always
FileSet:         Full Set
Backup Client:   bacula-fd
Restore Client:  bacula-fd
Storage:         File1
When:            2016-03-16 16:33:22
Catalog:         MyCatalog
Priority:        10
OK to run? (yes/mod/no): yes
Job queued. JobId=5
You have messages.
*

リストアもジョブとして登録されます。
「done」を入力後に「yes」を入力して、「Enterキー」を押下します。
JobIdが「5」として実行されました

リストア確認

リストア実行後に正常にリストアされたことを確認してみましょう。
確認は「status」コマンドを使用します。

* status
Status available for:
     1: Director
     2: Storage
     3: Client
     4: Scheduled
     5: All
Select daemon type for status (1-5): 1

「1」を選択します。

bacula-dir Version: 7.0.5 (28 July 2014) x86_64-redhat-linux-gnu redhat Enterprise release
Daemon started 16- 3・016 14:11. Jobs: run=1, running=0 mode=0,0
 Heap: heap=270,336 smbytes=293,139 max_bytes=380,022 bufs=266 max_bufs=305

Scheduled Jobs:
Level          Type     Pri  Scheduled          Job Name           Volume
===================================================================================
Incremental    Backup    10  16- 3・016 23:05  JOB-Bacula7        Vol-0001
Incremental    Backup    10  16- 3・016 23:05  BackupClient1      Vol-0001
Full           Backup    11  16- 3・016 23:10  BackupCatalog      Vol-0001
====

Running Jobs:
Console connected at 16- 3・016 14:58
No Jobs running.
====

Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
====================================================================
     1  Full          1    26.52 K  OK       15- 3・016 17:28 BackupCatalog
     2  Full          1    30.42 K  OK       16- 3・016 14:55 BackupCatalog

====
*

実行したJobIdが「OK」となっていますでしょうか。
先ほどの例ですと、実行したJOBのIdは「5」でした。
「OK」となっていますので、正常にリストアは実行されました。

実際に対象のディレクトリに移動して、ファイルがリストアされていることも確認しましょう。

以上が非常に基本的ではありますが、リストア手順になります。