はじめに
前回はなぜバックアップが必要なのかを説明しました。今回は実際にBaculaをさわってみて、バックアップとリストアを試してみましょう。
用意するのは、CentOS7.2の入ったサーバ1台です。仮想環境でも問題ありません。
前回の最後で書いた通り、今後の連載では以下の内容を扱います。
- 第2回 Baculaでバックアップをしてみよう
- 第3回 GUIツールBaculumを使ってバックアップを簡単にする
- 第4回 Baculaを使いやすくするための設定値解説
- 第5回 LinuxだけじゃないWindowsのファイルもバックアップ
- 第6回 忘れてはいけないリストアの手法
- 第7回 Baculaをもっと活用しよう(Bacula Enterpriseでできること)
上記で使用する環境をすべて作成すると、以下の図のようなシステムができあがることになります(もちろん全部作成しなくてもかまいません)。
Baculaのアーキテクチャ
最初に、Baculaというソフトの構成を説明します。
Baculaの主要なコンポーネントは次の3つです。括弧内はサービス名です。各コンポーネントの起動やステータス確認はこの名前で行ってください。
- ディレクターデーモン(bacula-dir)
Bacula全体の動作を制御するメインコンポーネントです。履歴を管理する内部データベース(カタログ)も含まれます。
- ストレージデーモン(bacula-sd)
バックアップした実データを保存するサーバにインストールし、書き込みや読み出し動作を行います。
- ファイルデーモン(bacula-fd)
バックアップ対象のサーバやPCにインストールして、データの読み出しを行います。リストア時には書き込みを行います。Baculaクライアントと呼ぶこともあります。
これら3つのコンポーネントは1つのサーバにすべて入っていてもいいですし、すべて異なるサーバでもかまいません。
今回は1台のサーバにすべてのコンポーネントをインストールします。なお、今後の連載の説明の中にも本サーバが登場します(便宜上、本サーバを「管理サーバ」と呼びます)。
また、コマンドライン上で操作を行うための以下のツールがあります。
- bconsole
bconsoleはディレクターデーモンと通信を行い、ディレクターデーモンが実際のバックアップやリストア動作の命令を出します。
事前準備
Baculaは以下のポートを使用します。ファイヤーウォールの設定をしておいてください。
ポート番号 | 利用目的 |
9101(TCP) | ディレクターデーモン(bacula-dir)が使用 |
9103(TCP) | ストレージデーモン(bacula-sd)が使用 |
9102(TCP) | ファイルデーモン(bacula-fd)が使用 |
なお、CentOS 7.2では、サービスが登録されていますので、以下のようにしてファイヤーウォール設定が行えます。
SELinuxはEnforcingのままでも問題ありません。
Baculaのインストール
実際のインストール手順を進めていきましょう
リポジトリの追加
まず、yumリポジトリの追加を行います。リポジトリを追加しなくてもyumコマンドでbaculaが見つかりますが、新しいバージョンのbaculaを使用するためリポジトリの追加を推奨します。
Baculaパッケージのインストール
リポジトリの追加が完了したら、yumコマンドでBaculaのディレクターデーモン、ストレージデーモン、ファイルデーモン、MariaDBをインストールします。MariaDBはジョブの実行履歴などを管理するカタログ用途に使用します。
MariaDBの初期設定
MariaDBを一度起動して自動起動も有効にしておきます。
また、初期化を行います。
上記コマンド実行後、以下のようにパスワード設定について尋ねられますのでyを選択し任意のパスワードを入力してください。本解説では”dbpass”を使用します。
他の質問についてはすべてyと答えておいてください。
Bacula用のデータベースを作成します。
Bacula用のテーブルの作成を行います。
Baculaが使用するデータベースの変更を行います。
もう一度コマンドを実行して、変更されていることを確認します。1に+があれば変更されています。
Baculaの設定ファイルの編集
Baulaのアーキテクチャで説明した通り、Baculaは複数のコンポーネントで構成されています。このため、設定ファイルがコンポーネントごとにあります。
今回は一台のマシンにすべてを入れて動かすので、次の4つの設定ファイルを編集します。
- /etc/bacula/bacula-dir.conf(ディレクターデーモン設定)
- /etc/bacula/bacula-sd.conf(ストレージデーモン設定)
- /etc/bacula/bacula-fd.conf(ファイルデーモン設定)
- /etc/bacula/bconsole.conf(bconsoleの設定ファイル)
ひとつずつ設定していきましょう。
なお、設定ファイル内では各コンポーネントの事を「リソース」と呼びます。
bacula-dir.conf
実際のバックアップ動作などはすべてディレクターデーモンが制御します。このためbacula-dir.confは使用する全リソースの情報が記載され、全設定ファイルのなかで一番長い設定ファイルになっています。各リソースは{}で囲まれ、その中にディレクティブ(設定項目)と設定値を記入します。なお設定ファイルにはデフォルトの設定がすでに記載されています。
すべてのディレクティブを見るのは大変なので、必要な箇所だけを変更していきましょう。
まず自分自身のDirectorリソース部分を編集します。
Passwordディレクティブに任意のパスワードを記入します。赤太字部分が変更点です。ここではbacula-passというパスワードを使用します。
次に、バックアップジョブで使うJobリソースの設定をします。
どのディレクトリをバックアップ対象にするかを決めるFilesetリソースを設定します。
バックアップ対象を設定するClientリソースを設定します。
バックアップデータの保存先を設定するStorageリソースを設定します。
Catalogリソース(内部データベース)の設定
先にMariaDBで作成したbacula用データベースのパスワードを設定します。
Consoleリソースの設定をします。
bacula-sd.conf
次にbacula-sd.confの設定にうつります。
以下の箇所をbacula-dir.confで入力した通りに変更します。
bacula-fd.conf
bacula-fd.confの設定にうつります。
以下の箇所をbacula-dir.confで入力した通りに変更します。
bconsole.conf
bconsole.confの設定にうつります。
以下の箇所をbacula-dir.confで入力した通りに変更します。
*.confファイルの設定は以上です。
設定ファイル間の関係
今回は分かりやすいよう、リソース名はデフォルトのまま、パスワードはすべてbacula-passにしています。それぞれの対応関係は以下の図のようになります。最初の設定後に動かないという場合は、ほとんどがリソース名やパスワードがファイル間で一致しないことによるものですので、間違えないようにしてください。
Baculaでバックアップ
それでは、設定が整いましたのでBaculaでバックアップを行ってみましょう。
バックアップ前の準備
今回は/test配下をバックアップする設定をしているので、/testに何かファイルを置いておきましょう。
サービスの起動
まず、Baculaの各サービスを起動します。
また、baculaのプログラムではありませんが、MariaDBが起動していることも確認してください。
bconsoleからの操作でバックアップジョブを実行
コマンドラインツールであるbconsoleを使います。bconsoleと入力して起動します。
runと入力して、先ほど作成したバックアップジョブのBackup-TestJobを選択します。
選択すると、実行するジョブの詳細が表示されます。変更点がある場合にはmodを選択しますが、ここではこのままyesを入力します。
即座にジョブがキューに入ります。
ジョブの結果を確認するため、少し待ってからstatusコマンドを実行してみましょう。
Directorを選択します。
最終行のTerminated Jobsで、先ほど実行したジョブが正常に完了したことが確認できます。
バックアップファイルの確認
Bconsoleから、以下の書式でコマンドを実行すると、バックアップしたファイルを確認することができます。
Baculaでリストア
リストアを行ってみましょう。
リストア時にはデフォルトだと/tmp/bacula-restoresにバックアップディレクトリごとリストアされます。もちろん元あった場所に戻すこともできますが、今回はデフォルトの設定を使用します。
バックアップと同様にbconsoleを使用して操作します。bconsoleを起動したら、restoreとコマンドを入力します。
1を入力すると、直近20件の履歴が表示されます。今回はJobId 001のジョブしかありませんが、ジョブを複数実行していた場合にはそれらも表示されています。
ジョブIDを確認したら、3を選択します。
ここで、先ほど確認したジョブIDを入力します。
すると、リストアを行うファイルの選択画面に移ります。今回はtestディレクトリのバックアップを行いました。そのため、この状態でlsコマンドを使用するとtestディレクトリが見えます。
testディレクトリの中に移動すると、バックアップしたtestディレクトリの中に入っていたファイルがあることが確認できます。
リストアしたいファイル(ディレクトリ)は、以下のようにaddすることでリストア対象になります。
すべてのファイルをリストアしたい場合には、以下のようにワイルドカードを使用します。
選択が終わったらdoneを入力します。
リストアの確認画面が表示されます。
yesを入力します。
なお、ファイルを元の場所に戻したい場合には、modから”Where”を選択し、”/”を指定すると元の場所にリストアできます。
ジョブの実行後、statusコマンドで実行結果を確認することができます。
Terminated Jobsに、実行したリストアジョブの結果が表示されています。
実際にファイルがリストアされているか確認してみましょう。
/tmp/bacula-restoresにファイルがディレクトリごとリストアされているはずです。
以上、baculaでのバックアップ・リストアの流れのご紹介でした。次回ではGUIを使った操作方法を説明します。