はじめに
ネットバックアップツールのBaculaをインストールするでは、バックアップサーバーとクライアントの構築方法について解説しました。 今回は、リモートバックアップとリストアの方法について解説します。
2014年02月08日 23時14分
ネットバックアップツールのBaculaをインストールするでは、バックアップサーバーとクライアントの構築方法について解説しました。 今回は、リモートバックアップとリストアの方法について解説します。
前提条件は、前回の記事と同一です。
バックアップを実行するためには、バックアップメディアが必要です。今回は、ファイルシステムをバックアップアップメディアとしてセットアップします。
Consoleを起動すると、Directorに接続した後、*(アスタリスク)のコマンドプロンプトが表示されます。
$ sudo bconsole
labelコマンドを実行すると、Catalogに指定されたStorageが自動検出され、FileStorageが選択された後、ボリューム名の入力待ちになりますので、任意のボリューム名を入力します。
ここでは、file1としています。
*label
ボリューム名を入力すると、定義済みのPool名が表示されますので、Fileを選択します。
選択すると、指定したボリューム名のメディアが作成されます。

Consoleを終了し、バックアップフォルダを確認すると、指定したメディアが作成されています。

以上で、メディアセットアップは終了です。
インストールされたデフォルトのバックアップジョブが既に定義されていますが、ここではバックアップジョブの定義を行い、設定のポイントについて解説します。
なお、全ての作業は、全てDirector設定ファイル/etc/bacula/bacula-dir.conf)に対して行います。
FileSetは、バックアップ対象ファイルおよび、除外ファイルを指定します。 Includedで、対象ファイルを、Excludeで、除外ファイルを指定できます。
#
# バックアップジョブの登録
#
FileSet { # バックアップファイルの定義
Name = "Test Set"
Include { # バックアップ対象
Options {
Signature = MD5
}
File = /usr/sbin
}
Exclude { # バックアップ除外
File = /tmp
File = /proc
}
}

JobDefsは、バックアップ対象サーバーに共通するバックアップジョブを定義します。
Jobの定義では、Level/FileSet/Storage/Poolの指定がポイントとなります。
JobDefs { # 共通フルバックアップジョブ
Name = "CommonFullBackupJob"
Type = Backup
Level = Full
FileSet = "Test Set"
Schedule = "WeeklyCycleAfterBackup"
RunBeforeJob = "/usr/libexec/bacula/make_catalog_backup.pl MyCatalog"
RunAfterJob = "/usr/libexec/bacula/delete_catalog_backup"
Write Bootstrap = "/var/spool/bacula/%n.bsr"
Priority = 11
Storage = File
Pool = File
Messages = Standard
}

Jobは、バックアップ対象サーバーの情報を定義します。
ここでは、ジョブ名、共通ジョブ名、クライアント名を定義します。
Job { # bacula-serverフルバックアップ
Name = "FULL_BACKUP_SERVER" # runコマンドで表示されるジョブ名
JobJefs = "CommonFullBackupJob" # 共通フルバックアップジョブ
Client = "bacula-server" # バックアップ対象クライアント
}
Jobで定義したクライアントに関する情報を定義します。
クライアント名、IPアドレスの指定が必要です。
Client { # クライアント情報設定
Name = bacula-server # ジョブで指定されたクライアント名
Address = localhost # クライアントのIPアドレス
FDPort = 9102 # File Daemon接続ポート番号
Catalog = MyCatalog # カタログDBのバックアップ情報の名称
Password = "admin" # Director Daemon接続パスワード
File Retention = 30 days # カタログDBのFileレコード情報保有期限
Job Retention = 6 months # カタログDBのJobレコード情報保有期限
AutoPrune = yes # ボリュームの自動パージフラグ
}

Director設定ファイルの編集が終了したら、Directorを再起動します。
$ sudo service bacula-dir restart

バックアップジョブを定義しましたので、ジョブを実行します。
$ sudo bconsole
Consoleのコマンドプロンプトから、runコマンドを実行します。
*run

runコマンドを実行すると、Directorに登録されたジョブが表示されますので、実行したいジョブを選択します。
選択すると、ジョブがキューイングされ、しばらくするとバックアップジョブが実行されます。
Consoleに表示されたログ上で、実行したCatalog/Storage/Pool/FileSetなどが確認できます。
これまでの手順で、Baculaクライアントのリモートバックアップを行います。
Job { # bacula-clientフルバックアップ
Name = "FULL_BACKUP_CLIENT" # runコマンドで表示されるジョブ名
JobJefs = "CommonFullBackupJob" # 共通フルバックアップジョブ
Client = "bacula-client" # バックアップ対象クライアント
}
Client { # クライアント情報設定
Name = bacula-client # ジョブで指定されたクライアント名
Address = 192.168.0.20 # クライアントのIPアドレス
FDPort = 9102 # File Daemon接続ポート番号
Catalog = MyCatalog # カタログDBのバックアップ情報の名称
Password = "admin" # Director Daemon接続パスワード
File Retention = 30 days # カタログDBのFileレコード情報保有期限
Job Retention = 6 months # カタログDBのJobレコード情報保有期限
AutoPrune = yes # ボリュームの自動パージフラグ
}

$ sudo service bacula-dir restart

$ sudo bconsole
作成したFileSetをリストアするジョブを定義します。
バックアップしたメディアから、リストアを行います。
リストアは、Baculaクライアントで実行するため、クライアントには、File Daemonおよび、Bacula Consoleがインストールされ、Baculaサーバーと接続できることが必須となります。
このため、ディザスターリカバリやハードウェア障害からのリカバリを行うためには、上記の環境を構築した後、またはシステムリカバリツールなどで基本システムを復旧した後に、リストアする必要があります。
$ sudo bconsole
リストアするクライアントの最新バックアップを確認します。
JobId: 5が最新だと確認できます。
*list jobs

*restore
実行すると、Jobメニューが表示されますので、5:Select the most recent backup for a client を選択します。

登録済みのクライアントがリストされますので、リストアするクライアントを選択します。

最新のバックアップメディアが、一時フォルダにリストアされた後、リストアするファイルを選択する$プロンプトが表示されます。
mark *(アスタリスク)により、ファイルをマークし、doneを入力するとマーク指定が終了します。

マーク指定が終了すると、定義済みのリストアジョブが表示されますので、バックアップメディアに対応したリストアジョブを選択します。

選択されたリストアジョブのリストア先、バックアップされたクライアント情報などが表示され、実行確認をされますので、yesを入力するとジョブがキューイングされます。
しばらくするとリストアジョブが実行されます。

リストアが成功したらConsoleを終了し、実行したリストアジョブで定義したリストア先を確認します。
以上で、リストアは終了です。