Ubuntu 14.04にBaculaサーバーをインストールする方法

前書き

Baculaは、コンピュータシステムのバックアップを作成し、データリカバリを実行できるオープンソースのネットワークバックアップソリューションです。 非常に柔軟で堅牢なため、構成が少し面倒ですが、多くの状況でのバックアップに適しています。 データ損失からの回復は多くの場合、災害復旧計画の重要な部分であるため、バックアップシステムはimportant component in most server infrastructuresです。

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

代わりにCentOS7を使用する場合は、次のリンクをたどってください:How To Install Bacula Server on CentOS 7

前提条件

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

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

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

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

Baculaコンポーネントの概要

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

Baculaserver(これを「バックアップサーバー」とも呼びます)には、次のコンポーネントがあります。

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

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

  • Catalog:バックアップされたファイルのデータベースを維持するサービス。 データベースは、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.

Baculaclient、つまり バックアップされるサーバーは、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の設定に使用されるいくつかの情報の入力を求められます:

  • General Type of Mail Configuration:「インターネットサイト」を選択

  • System Mail Name:サーバーのFQDNまたはホスト名を入力します

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

  • Configure database for bacula-director-mysql with dbconfig-common?:「はい」を選択

  • Password of the database’s administrative user: MySQLルートパスワードを入力します(MySQLのインストール時に設定)

  • MySQL application password for bacula-director-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 — Rename BackupClient1 job

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

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

bacula-dir.conf — Rename RestoreFiles job

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

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

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

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

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

bacula-dir.conf — Update “Full Set” FileSet

FileSet {
  Name = "Full Set"
  Include {
    Options {
      signature = MD5
      compression = GZIP
    }
File = /
}
  Exclude {
    File = /var/lib/bacula
    File = /bacula
    File = /proc
    File = /tmp
    File = /.journal
    File = /.fsck
  }
}

「フルセット」ファイルセットに加えた変更について見ていきましょう。 まず、バックアップアーカイブの作成時にgzip圧縮を有効にしました。 次に、/を含めます。 バックアップするルートパーティション。 第3に、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 — Update Storage Address

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

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

プールを構成する

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

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

bacula-dir.conf — Update Pool:

# File Pool definition
Pool {
  Name = File
  Pool Type = Backup
  Label Format = Local-
  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 — update 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
  SDAddress = backup_server_private_FQDN
}

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

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

bacula-sd.conf — update Archive Device

Device {
  Name = FileStorage
  Media Type = File
  Archive Device = /bacula/backup
  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コンソールプロンプトが表示されます。

ラベルを作成する

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

label

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

Enter new Volume name:MyVolume

次に、バックアップで使用するプールを選択します。 「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 running
====

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

Output — status director (Terminated Jobs)Terminated Jobs:
 JobId  Level    Files      Bytes   Status   Finished        Name
====================================================================
     3  Full    161,124    877.5 M  OK       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/*"

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

結論

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

次のチュートリアルでは、他のリモートサーバーをBaculaクライアントとして追加する方法を示します:How To Back Up an Ubuntu 14.04 Server with Bacula

Related