Baculaを使ってリモートバックアップを実行する

2014年02月08日 23時14分

201402082314BBAC00.png

メディアセットアップ

バックアップを実行するためには、バックアップメディアが必要です。今回は、ファイルシステムをバックアップアップメディアとしてセットアップします。

  1. Bacula Consoleの起動

    Consoleを起動すると、Directorに接続した後、*(アスタリスク)のコマンドプロンプトが表示されます。

    $ sudo bconsole
    
  2. labelコマンドの実行

    labelコマンドを実行すると、Catalogに指定されたStorageが自動検出され、FileStorageが選択された後、ボリューム名の入力待ちになりますので、任意のボリューム名を入力します。
    ここでは、file1としています。

    *label
    
  3. Pool指定

    ボリューム名を入力すると、定義済みのPool名が表示されますので、Fileを選択します。
    選択すると、指定したボリューム名のメディアが作成されます。

    201402082314BBAC01.png

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

    201402082314BBAC02.png

    以上で、メディアセットアップは終了です。

バックアップジョブの定義

インストールされたデフォルトのバックアップジョブが既に定義されていますが、ここではバックアップジョブの定義を行い、設定のポイントについて解説します。
なお、全ての作業は、全てDirector設定ファイル/etc/bacula/bacula-dir.conf)に対して行います。

  1. FileSetの定義

    FileSetは、バックアップ対象ファイルおよび、除外ファイルを指定します。 Includedで、対象ファイルを、Excludeで、除外ファイルを指定できます。

    #
    # バックアップジョブの登録
    #
    FileSet {         # バックアップファイルの定義
      Name = "Test Set"
      Include {       # バックアップ対象
        Options {
          Signature = MD5
        }
        File = /usr/sbin
      }
      Exclude {       # バックアップ除外
        File = /tmp
        File = /proc
      }
    }
    
    201402082314BBAC03.png
  2. JobDefsの定義

    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
    }
    
    201402082314BBAC04.png
  3. Jobの定義

    Jobは、バックアップ対象サーバーの情報を定義します。
    ここでは、ジョブ名、共通ジョブ名、クライアント名を定義します。

    Job {             # bacula-serverフルバックアップ
      Name            = "FULL_BACKUP_SERVER"  # runコマンドで表示されるジョブ名
      JobJefs         = "CommonFullBackupJob" # 共通フルバックアップジョブ
      Client          = "bacula-server"       # バックアップ対象クライアント
    }
    
  4. Clientの定義

    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                   # ボリュームの自動パージフラグ
    }
    
    201402082314BBAC05.png
  5. Directorの再起動

    Director設定ファイルの編集が終了したら、Directorを再起動します。

    $ sudo service bacula-dir restart
    
    201402082314BBAC06.png

バックアップジョブの実行

バックアップジョブを定義しましたので、ジョブを実行します。

  1. Bacula Consoleの起動
    $ sudo bconsole
    
  2. runコマンドの実行

    Consoleのコマンドプロンプトから、runコマンドを実行します。

    *run
    
    201402082314BBAC07.png
  3. 定義済みジョブの実行

    runコマンドを実行すると、Directorに登録されたジョブが表示されますので、実行したいジョブを選択します。
    選択すると、ジョブがキューイングされ、しばらくするとバックアップジョブが実行されます。

    Consoleに表示されたログ上で、実行したCatalog/Storage/Pool/FileSetなどが確認できます。

    201402082314BBAC08.png
    201402082314BBAC09.png
  4. リモートバックアップの実行

    これまでの手順で、Baculaクライアントのリモートバックアップを行います。

    1. リモートジョブの定義
      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                   # ボリュームの自動パージフラグ
      }
      
      201402082314BBAC10.png
    2. Directorの再起動
      $ sudo service bacula-dir restart
      
      201402082314BBAC11.png
    3. Jobの実行
      $ sudo bconsole
      
      201402082314BBAC12.png
      201402082314BBAC13.png
      201402082314BBAC14.png

リストアジョブの定義

作成したFileSetをリストアするジョブを定義します。

  1. Jobの定義

    定義済みのStorage/Pool/FileSetおよび、Clientを指定し、リストアの場所を指定します。

    #
    # リストアジョブ登録
    #
    Job {
      Name = "Restore Test Set"
      Type = Restore
      Client=bacula-client
      FileSet="Test Set"
      Storage = File
      Pool = File
      Messages = Standard
      Where = /tmp/bacula-restore
    }
    
    201402082314BBAC15.png
  2. Directorの再起動
    $ sudo service bacula-dir restart
    
    201402082314BBAC16.png

リストアジョブの実行

バックアップしたメディアから、リストアを行います。

リストアは、Baculaクライアントで実行するため、クライアントには、File Daemonおよび、Bacula Consoleがインストールされ、Baculaサーバーと接続できることが必須となります。
このため、ディザスターリカバリやハードウェア障害からのリカバリを行うためには、上記の環境を構築した後、またはシステムリカバリツールなどで基本システムを復旧した後に、リストアする必要があります。

  1. Bacula Consoleの起動
    $ sudo bconsole
    
  2. 最新バックアップの確認

    リストアするクライアントの最新バックアップを確認します。
    JobId: 5が最新だと確認できます。

    *list jobs
    
    201402082314BBAC17.png
  3. restoreコマンドの実行
    *restore
    

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

    201402082314BBAC18.png
  4. リストアするクライアントの選択

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

    201402082314BBAC19.png
  5. リストアするファイルの選択

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

    201402082314BBAC20.png
  6. リストアジョブの選択

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

    201402082314BBAC21.png
  7. ジョブの実行確認

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

    201402082314BBAC22.png
    201402082314BBAC23.png
  8. リストアの実行

    しばらくするとリストアジョブが実行されます。

    201402082314BBAC24.png
  9. リストア先の確認

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

    201402082314BBAC25.png
    201402082314BBAC26.png

    以上で、リストアは終了です。