前書き

Baculaは、コンピュータシステムのバックアップを作成し、データリカバリを実行できるオープンソースのネットワークバックアップソリューションです。 非常に柔軟で堅牢なため、構成が少し面倒ですが、多くの状況でのバックアップに適しています。 バックアップシステムは、https://www.digitalocean.com/community/tutorials/5-ways-to-improve-your-production-web-application-server-setup [ほとんどのサーバーインフラストラクチャの重要なコンポーネント]であり、多くの場合、データ損失は災害復旧計画の重要な部分です。

このチュートリアルでは、Ubuntu 14.04サーバーにBaculaのサーバーコンポーネントをインストールして設定する方法を示します。 ローカルバックアップを作成する毎週のジョブを実行するようにBaculaを構成します(つまり、 独自のホストのバックアップ)。 これ自体は、特に魅力的なBaculaの使用方法ではありませんが、他のサーバーのバックアップを作成するための良い出発点となります。 バックアップクライアント。 このシリーズの次のチュートリアルでは、Baculaクライアントをインストールして構成し、Baculaサーバーを構成して、他のリモートサーバーのバックアップを作成する方法を説明します。

代わりにCentOS 7を使用する場合は、次のリンクに従ってください:https://www.digitalocean.com/community/tutorials/how-to-install-bacula-server-on-centos-7[Baculaサーバーのインストール方法CentOS 7]。

前提条件

Ubuntu 14.04サーバーでスーパーユーザー(sudo)アクセスが必要です。 また、サーバーは、常に保持する予定のすべてのバックアップに十分なディスク容量を必要とします。

DigitalOceanを使用している場合は、Baculaサーバーと同じデータセンター地域にあるすべてのクライアントサーバーで*プライベートネットワーク*を有効にする必要があります。 これにより、サーバーはバックアップの実行時にプライベートネットワークを使用できるようになり、ネットワークのオーバーヘッドが削減されます。

サーバーのプライベートFQDNを使用するようにBaculaを設定します。 + bacula.private.example.com +。 DNSを設定していない場合は、代わりに適切なIPアドレスを使用してください。 プライベートネットワーキングを有効にしていない場合は、このチュートリアルのすべてのネットワーク接続情報を、問題のサーバーから到達可能なネットワークアドレスに置き換えます(例: パブリックIPアドレスまたはVPNトンネル)。

Baculaのコンポーネントの概要を見て始めましょう。

Baculaコンポーネントの概要

Baculaはいくつかのソフトウェアコンポーネントで構成されていますが、サーバークライアントバックアップモデルに従っています。議論を簡単にするために、個々のBaculaコンポーネントよりも*バックアップサーバー*と*バックアップクライアント*に重点を置きます。 それでも、さまざまなBaculaコンポーネントについて大まかな知識を持っていることが重要です。そのため、ここでそれらについて詳しく説明します。

「バックアップサーバー」とも呼ばれるBacula * server *には、次のコンポーネントがあります。

  • * Bacula Director(DIR):*ファイルおよびストレージデーモンによって実行されるバックアップおよび復元操作を制御するソフトウェア

  • *ストレージデーモン(SD):*バックアップに使用されるストレージデバイスで読み取りと書き込みを実行するソフトウェア

  • *カタログ:*バックアップされるファイルのデータベースを維持するサービス。 データベースは、MySQLやPostgreSQLなどのSQLデータベースに保存されます

  • * Bacula Console:*バックアップ管理者がBacula Directorと対話し、制御できるようにするコマンドラインインターフェイス

Note: The Bacula server components don't need to run on the same server, but they all work together to provide the backup server functionality.

Bacula クライアント、つまり バックアップされるサーバーは、* File Daemon(FD)*コンポーネントを実行します。 File Daemonは、バックアップされるデータへのBaculaサーバー(特にDirector)へのアクセスを提供するソフトウェアです。 これらのサーバーを「バックアップクライアント」または「クライアント」とも呼びます。

はじめに述べたように、独自のファイルシステムのバックアップを作成するようにバックアップサーバーを構成します。 これは、バックアップサーバーがバックアップクライアントでもあり、ファイルデーモンコンポーネントを実行することを意味します。

インストールを始めましょう。

MySQLをインストールする

Baculaは、MySQLやPostgreSQLなどのSQLデータベースを使用して、バックアップカタログを管理します。 このチュートリアルではMySQLを使用します。

まず、apt-getを更新します。

sudo apt-get update

次に、apt-getを使用してMySQLサーバーをインストールします。

sudo apt-get install mysql-server

MySQLデータベース管理ユーザーrootのパスワードの入力を求められます。 パスワードを入力して、確認します。

このパスワードは、Baculaのインストールプロセスで使用されるため、覚えておいてください。

Baculaをインストールする

apt-getを使用して、Baculaサーバーとクライアントコンポーネントをインストールします。

sudo apt-get install bacula-server bacula-client

Baculaが使用するPostfixの設定に使用されるいくつかの情報の入力を求められます:

  • メール設定の一般タイプ:「インターネットサイト」を選択

  • *システムメール名:*サーバーのFQDNまたはホスト名を入力します

次に、Baculaデータベースのセットアップに使用される情報の入力を求められます:

  • * dbconfig-commonを使用してbacula-director-mysqlのデータベースを構成しますか?:*「はい」を選択します

  • データベースの管理ユーザーのパスワード: MySQLルートパスワードを入力します(MySQLのインストール中に設定)

  • * bacula-director-mysqlのMySQLアプリケーションパスワード*:新しいパスワードを入力して確認するか、プロンプトを空白のままにしてランダムパスワードを生成します

インストールの最後のステップは、Baculaがカタログバックアップジョブ中に使用するスクリプトの権限を更新することです:

sudo chmod 755 /etc/bacula/scripts/delete_catalog_backup

これで、Baculaサーバー(およびクライアント)コンポーネントがインストールされました。 バックアップディレクトリと復元ディレクトリを作成しましょう。

バックアップおよび復元ディレクトリの作成

Baculaには、バックアップアーカイブを保存するための* backup ディレクトリと、復元されたファイルが置かれる restore *ディレクトリが必要です。 システムに複数のパーティションがある場合は、十分なスペースがあるディレクトリにディレクトリを作成してください。

これら両方の目的のために新しいディレクトリを作成しましょう:

sudo mkdir -p /bacula/backup /bacula/restore

バキュラプロセス(およびスーパーユーザー)のみがこれらの場所にアクセスできるように、ファイルのアクセス許可を変更する必要があります。

sudo chown -R bacula:bacula /bacula
sudo chmod -R 700 /bacula

これで、Bacula Directorを構成する準備ができました。

Bacula Directorを構成する

Baculaには、正しく機能するために個別に構成する必要があるいくつかのコンポーネントがあります。 設定ファイルはすべて `+ / etc / bacula +`ディレクトリにあります。

バキュラディレクターから始めましょう。

Bacula Director設定ファイルをお気に入りのテキストエディターで開きます。 viを使用します。

sudo vi /etc/bacula/bacula-dir.conf

ローカルジョブを構成する

Baculaジョブは、バックアップおよび復元アクションを実行するために使用されます。 ジョブリソースは、特にクライアントの名前、バックアップまたは復元するFileSetなど、特定のジョブが実行する処理の詳細を定義します。

ここでは、ローカルファイルシステムのバックアップを実行するために使用されるジョブを構成します。

Director構成で、「BackupClient1」という名前の* Job *リソースを見つけます(「BackupClient1」を検索)。 `+ Name +`の値を“ BackupLocalFiles”に変更すると、次のようになります。

bacula-dir.conf-BackupClient1ジョブの名前を変更

Job {
 Name = ""
 JobDefs = "DefaultJob"
}

次に、「RestoreFiles」という名前の* Job *リソースを見つけます(「RestoreFiles」を検索)。 このジョブでは、2つのことを変更します。+ Name + `の値を“ RestoreLocalFiles”に更新し、 + Where + `の値を“ / bacula / restore”に更新します。 これは次のようになります。

bacula-dir.conf-RestoreFilesジョブの名前変更

Job {
 Name = ""
 Type = Restore
 Client=BackupServer-fd
 FileSet="Full Set"
 Storage = File
 Pool = Default
 Messages = Standard
 Where =
}

これにより、以前に作成したディレクトリである「+ / bacula / restore +」にファイルを復元するRestoreLocalFilesジョブが設定されます。

ファイルセットを構成する

Bacula FileSetは、バックアップ選択から* include または exclude *ファイルにファイルまたはディレクトリのセットを定義し、ジョブによって使用されます。

「フルセット」という名前のFileSetリソースを探します(「#バックアップするファイルのリスト」というコメントの下にあります)。 ここでは、3つの変更を行います。(1)gzipを使用してバックアップを圧縮するオプションを追加します。(2)インクルードファイルを `+ / usr / sbin `から ` / `に変更し、(3)2番目のFileを ` / bacula +`に除外します。 コメントを削除すると、次のようになります。

bacula-dir.conf-「フルセット」ファイルセットの更新

FileSet {
 Name = "Full Set"
 Include {
   Options {
     signature = MD5

   }
File =
}
 Exclude {
   File = /var/lib/bacula
   File =
   File = /proc
   File = /tmp
   File = /.journal
   File = /.fsck
 }
}

「フルセット」ファイルセットに加えた変更について見ていきましょう。 まず、バックアップアーカイブの作成時にgzip圧縮を有効にしました。 第二に、「+ / 」、つまり バックアップするルートパーティション。 第三に、Baculaのバックアップと復元されたファイルを重複してバックアップしたくないため、「 / bacula +」を除外しています。

Note: If you have partitions that are mounted within /, and you want to include those in the FileSet, you will need to include additional File records for each of them.

バックアップジョブで常に「フルセット」などの幅広いファイルセットを使用する場合、バックアップの選択がより具体的である場合よりも多くのディスク領域がバックアップに必要になることに注意してください。 たとえば、必要なソフトウェアパッケージのインストールと復元されたファイルの適切な場所への配置を詳細に説明する明確なリカバリプランがある場合、カスタマイズされた構成ファイルとデータベースのみを含むFileSetで十分です。バックアップアーカイブのディスク容量。

ストレージデーモン接続の構成

Bacula Director構成ファイルで、StorageリソースはDirectorが接続するStorage Daemonを定義します。 実際のストレージデーモンをすぐに構成します。

ストレージリソースを見つけて、アドレスの値「+ localhost +」をバックアップサーバーのプライベートFQDN(またはプライベートIPアドレス)に置き換えます。 次のようになります(強調表示されている単語を置き換えます)。

bacula-dir.conf-ストレージアドレスの更新

Storage {
 Name = File
# Do not use "localhost" here
 Address =                 # N.B. Use a fully qualified name here
 SDPort = 9103
 Password = "ITXAsuVLi1LZaSfihQ6Q6yUCYMUssdmu_"
 Device = FileStorage
 Media Type = File
}

これは、プライベートネットワークインターフェイスでリッスンするようにストレージデーモンを構成し、リモートクライアントが接続できるようにするために必要です。

プールを構成する

プールリソースは、Baculaがバックアップを書き込むために使用するストレージのセットを定義します。 ストレージボリュームとしてファイルを使用し、ラベルを更新するだけで、ローカルバックアップに適切なラベルが付けられます。

「ファイル」という名前のプールリソース(「#ファイルプールの定義」というコメントの下にあります)を見つけて、ラベル形式を指定する行を追加します。 完了すると、次のようになります。

bacula-dir.conf-更新プール:

# File Pool definition
Pool {
 Name = File
 Pool Type = Backup

 Recycle = yes                       # Bacula can automatically recycle Volumes
 AutoPrune = yes                     # Prune expired volumes
 Volume Retention = 365 days         # one year
 Maximum Volume Bytes = 50G          # Limit Volume size to something reasonable
 Maximum Volumes = 100               # Limit number of Volumes in Pool
}

保存して終了。 最後に、Bacula Directorの構成が完了しました。

ディレクター構成を確認します。

Director構成ファイルに構文エラーがないことを確認しましょう。

sudo bacula-dir -tc /etc/bacula/bacula-dir.conf

エラーメッセージがない場合、 `+ bacula-dir.conf +`ファイルには構文エラーはありません。

次に、ストレージデーモンを構成します。

ストレージデーモンの構成

Baculaサーバーはほぼセットアップされていますが、Storage Daemonを構成する必要があるため、Baculaはバックアップの保存場所を認識しています。

お気に入りのテキストエディターでSD構成を開きます。 viを使用します。

sudo vi /etc/bacula/bacula-sd.conf

ストレージリソースの構成

ストレージリソースを見つけます。 これは、SDプロセスが接続をリッスンする場所を定義します。 `+ SDAddress +`パラメータを追加し、バックアップサーバーのプライベートFQDN(またはプライベートIPアドレス)に割り当てます。

bacula-sd.conf-SDAddressの更新

Storage {                             # definition of myself
 Name = BackupServer-sd
 SDPort = 9103                  # Director's port
 WorkingDirectory = "/var/lib/bacula"
 Pid Directory = "/var/run/bacula"
 Maximum Concurrent Jobs = 20

}

ストレージデバイスの構成

次に、「FileStorage」という名前のデバイスリソースを見つけ(「FileStorage」を検索)、バックアップディレクトリに一致するように「+ Archive Device +」の値を更新します。

bacula-sd.conf-アーカイブデバイスの更新

Device {
 Name = FileStorage
 Media Type = File
 Archive Device =
 LabelMedia = yes;                   # lets Bacula label unlabeled media
 Random Access = Yes;
 AutomaticMount = yes;               # when device opened, read it
 RemovableMedia = no;
 AlwaysOpen = no;
}

保存して終了。

ストレージデーモン構成の確認

Storage Daemon構成ファイルに構文エラーがないことを確認しましょう。

sudo bacula-sd -tc /etc/bacula/bacula-sd.conf

エラーメッセージがない場合、 `+ bacula-sd.conf +`ファイルには構文エラーはありません。

Baculaの設定が完了しました。 Baculaサーバーのコンポーネントを再起動する準備が整いました。

Bacula DirectorとStorage Daemonを再起動します

行った設定変更を有効にするには、次のコマンドでBacula DirectorとStorage Daemonを再起動します:

sudo service bacula-director restart
sudo service bacula-sd restart

両方のサービスが再起動されたので、バックアップジョブを実行して機能することをテストしてみましょう。

バックアップジョブのテスト

Bacula Consoleを使用して、最初のバックアップジョブを実行します。 問題なく実行される場合、Baculaが適切に設定されていることがわかります。

次のコマンドでコンソールに入ります:

sudo bconsole

これにより、 `+ * +`プロンプトで示されるBacula Consoleプロンプトが表示されます。

ラベルを作成する

`+ label +`コマンドを発行することから始めます:

label

ボリューム名を入力するように求められます。 好きな名前を入力してください:

Enter new Volume name:

次に、バックアップで使用するプールを選択します。 「2」を入力して、前に構成した「ファイル」プールを使用します。

Select the Pool (1-3):2

バックアップジョブを手動で実行する

Baculaは、バックアップ用のデータをどのように書き込むかを知っています。 バックアップを実行して、正常に動作することをテストできます。

run

実行するジョブを選択するよう求められます。 「BackupLocalFiles」ジョブを実行するため、プロンプトで「1」を入力します。

Select Job resource (1-3):1

「バックアップジョブの実行」確認プロンプトで詳細を確認し、「yes」と入力してジョブを実行します。

yes

メッセージとステータスを確認する

ジョブを実行すると、Baculaはメッセージがあることを通知します。 メッセージは、ジョブの実行によって生成された出力です。

次を入力してメッセージを確認します。

messages

メッセージには、「以前のフルバックアップジョブレコードが見つかりません」と表示され、バックアップジョブが開始されたことが示されます。 エラーがある場合、何かが間違っているので、ジョブが実行されなかった理由についてのヒントを提供する必要があります。

ジョブのステータスを確認する別の方法は、ディレクターのステータスを確認することです。 これを行うには、bconsoleプロンプトで次のコマンドを入力します。

status director

すべてが正常に機能している場合、ジョブが実行されていることがわかります。 このようなもの:

Output - status director (Running Jobs)Running Jobs:
Console connected at 09-Apr-15 12:16
JobId Level   Name                       Status
======================================================================
    3 Full    BackupLocalFiles.2015-04-09_12.31.41_06 is
====

ジョブが完了すると、次のようにステータスレポートの「終了したジョブ」セクションに移動します。

Output - status director (Terminated Jobs)Terminated Jobs:
JobId  Level    Files      Bytes   Status   Finished        Name
====================================================================
    3  Full    161,124    877.5 M         09-Apr-15 12:34 BackupLocalFiles

「OK」ステータスは、バックアップジョブが問題なく実行されたことを示します。 おめでとうございます。 Baculaサーバーの「フルセット」のバックアップがあります。

次のステップは、復元ジョブをテストすることです。

復元ジョブのテスト

バックアップが作成されたので、適切に復元できることを確認することが重要です。 `+ restore +`コマンドを使用すると、バックアップされたファイルを復元できます。

すべて復元ジョブを実行

デモのために、最後のバックアップですべてのファイルを復元します。

restore all

選択メニューには、さまざまなオプションが表示されます。これらのオプションは、復元するバックアップセットを識別するために使用されます。 バックアップは1つしかないため、「最新のバックアップを選択する」-オプション5を選択します。

Select item (1-13):5

クライアントはBaculaサーバーのみであるため、自動的に選択されます。

次のプロンプトは、使用するFileSetを尋ねます。 「フルセット」を選択します。これは2です。

Select FileSet resource (1-2):2

これにより、バックアップしたディレクトリ構造全体を含む仮想ファイルツリーにドロップされます。 このシェルのようなインターフェイスにより、単純なコマンドを使用して、復元するファイルをマークおよびマーク解除することができます。

「すべて復元する」ことを指定したため、バックアップされたすべてのファイルはすでに復元対象としてマークされています。 マークされたファイルは、先頭の「+ * +」文字で示されます。

選択を微調整する場合は、「ls」コマンドと「cd」コマンドを使用してファイルをナビゲートおよびリストし、「マーク」で復元するファイルをマークし、「マーク解除」でファイルのマークを解除します。 コンソールに「help」と入力すると、コマンドの完全なリストが利用できます。

復元の選択が完了したら、次のように入力して続行します。

done

復元ジョブを実行することを確認します。

OK to run? (yes/mod/no):yes

メッセージとステータスを確認する

バックアップジョブと同様に、復元ジョブを実行した後、メッセージとDirectorのステータスを確認する必要があります。

次を入力してメッセージを確認します。

messages

復元ジョブが開始されたか、「復元OK」ステータスで終了したことを示すメッセージが表示されます。 エラーがある場合、何かが間違っているので、ジョブが実行されなかった理由についてのヒントを提供する必要があります。

繰り返しますが、Directorのステータスを確認することは、復元ジョブの状態を確認するための優れた方法です。

status director

復元が終了したら、「+ exit +」と入力してBaculaコンソールを終了します。

exit

復元を確認

復元ジョブが選択したファイルを実際に復元したことを確認するには、 `+ / bacula / restore +`ディレクトリ(Director構成の「RestoreLocalFiles」ジョブで定義された)を確認できます。

sudo ls -la /bacula/restore

「RestoreLocalFiles」ジョブの「Exclude」セクションにリストされたファイルとディレクトリを除く、ルートファイルシステム内のファイルの復元されたコピーが表示されます。 データの損失から回復しようとした場合、復元されたファイルを適切な場所にコピーできます。

復元されたファイルを削除する

復元されたファイルを削除して、ディスク容量を解放することができます。 これを行うには、次のコマンドを使用します。

sudo -u root bash -c "rm -rf /bacula/restore/*"

復元されたファイルの多くはルートが所有しているため、この `+ rm +`コマンドをルートとして実行する必要があることに注意してください。

結論

これで、ローカルファイルシステムをバックアップおよび復元できる基本的なBaculaセットアップができました。 次のステップは、他のサーバーをバックアップクライアントとして追加し、データが失われた場合にそれらを回復できるようにすることです。

次のチュートリアルでは、他のリモートサーバーをBaculaクライアントとして追加する方法を示します。https://www.digitalocean.com/community/tutorials/how-to-back-up-an-ubuntu-14-04-server- with-bacula [BaculaでUbuntu 14.04サーバーをバックアップする方法]。