BaculaでUbuntu14.04サーバーをバックアップする方法
序章
このチュートリアルでは、ネットワーク接続を介してリモートUbuntu14.04ホストのバックアップを作成するようにBaculaを設定する方法を示します。 これには、リモートホストにBacula Clientソフトウェアをインストールして構成し、既存のBaculaサーバーの構成にいくつかの追加を行うことが含まれます(前提条件で説明されています)。
CentOS 7ホストのバックアップを作成しようとしている場合は、代わりに次のリンクをたどってください:Baculaを使用してCentOS7サーバーをバックアップする方法。
前提条件
このチュートリアルは、次のリンクで説明されているように、BaculaServerコンポーネントを実行しているサーバーがあることを前提としています: Ubuntu14.04にBaculaServerをインストールする方法。
また、バックアップサーバーとクライアントの通信にプライベートネットワークインターフェイスを使用していることも前提としています。 サーバーのプライベートFQDN(プライベートIPアドレスを指すFQDN)を参照します。 IPアドレスを使用している場合は、必要に応じて接続情報に置き換えてください。
このチュートリアルの残りの部分では、Baculaサーバーを「BaculaServer」、「Baculaサーバー」、または「バックアップサーバー」と呼びます。 バックアップされるリモートホストを「ClientHost」、「Client Host」、または「Client」と呼びます。
Baculaサーバーの構成にいくつかの簡単な変更を加えることから始めましょう。
Bacula Director構成の整理(サーバー)
Bacula Server で、このセクションを1回実行します。
Baculaサーバーをセットアップするときに、構成ファイルが長すぎることに気付いたかもしれません。 Bacula Directorの構成を少し整理してみます。そのため、個別のファイルを使用して、ジョブ、ファイルセット、プールなどの新しい構成を追加します。
Baculaの設定ファイルを整理するのに役立つディレクトリを作成しましょう。
sudo mkdir /etc/bacula/conf.d
次に、BaculaDirector構成ファイルを開きます。
sudo vi /etc/bacula/bacula-dir.conf
ファイルの最後に、次の行を追加します。
bacula-dir.conf —ファイルの終わりに追加
@|"find /etc/bacula/conf.d -name '*.conf' -type f -exec echo @{} \;"
保存して終了。 この行により、Directorは/etc/bacula/conf.d
ディレクトリで、追加する追加の構成ファイルを探します。 つまり、そこに追加された.conf
ファイルは、構成の一部としてロードされます。
RemoteFileプールを追加する
Bacula Director構成にプールを追加します。これを使用して、リモートバックアップジョブを構成します。
conf.d/pools.conf
ファイルを開きます。
sudo vi /etc/bacula/conf.d/pools.conf
次のプールリソースを追加します。
conf.d / pools.conf —プールリソースを追加します
Pool { Name = RemoteFile Pool Type = Backup Label Format = Remote- 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 }
保存して終了。 これにより、後で作成するバックアップジョブで使用する「RemoteFile」プールが定義されます。 自分のニーズに合わせて、パラメータを自由に変更してください。
まだBaculaDirectorを再起動する必要はありませんが、構成にエラーがないことを確認しましょう。
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
エラーがない場合は、Baculaクライアントのセットアップに進む準備ができています。
Baculaクライアントのインストールと設定
Baculaのセットアップに追加するクライアントホストでこのセクションを実行します。
まず、apt-getを更新します。
sudo apt-get update
次に、bacula-client
パッケージをインストールします。
sudo apt-get install bacula-client
これにより、「Baculaクライアント」と呼ばれることが多いBaculaファイルデーモン(FD)がインストールされます。
クライアントを構成する
クライアントファイルデーモンを構成する前に、このチュートリアルの残りの部分で使用される次の情報を調べる必要があります。
- クライアントのホスト名::この例では「ClientHost」を使用します
- クライアントプライベートFQDN:これを「client_private_FQDN」と呼びます。これは
clienthost.private.example.com
のようになります。 - Baculaサーバーのホスト名:この例では「BackupServer」を使用します
実際の設定は例とは異なるため、必要に応じて置換してください。
ファイルデーモン構成を開きます。
sudo vi /etc/bacula/bacula-fd.conf
いくつかの項目を変更し、サーバー構成に必要な情報を保存する必要があります。
クライアントのホスト名にちなんで名付けられたDirectorリソースを見つけることから始めます(例: 「clientHost-dir」)。 このクライアントを制御するBaculaDirectorはBaculaServer上にあるため、「Name」パラメーターをバックアップサーバーのホスト名に変更し、その後に「-dir」を付けます。 この例に従って、Baculaサーバーのホスト名として「BackupServer」を使用すると、更新後は次のようになります。
bacula-fd.conf —ディレクター名を更新
Director { Name = BackupServer-dir Password = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi" }
また、ファイルデーモンへの接続に使用される自動生成されたパスワードであるPassword
をコピーし、後で参照できるように保存する必要があります。 これは、バックアップサーバーのDirector構成で使用されます。これは、次の手順で設定し、クライアントのファイルデーモンに接続します。
次に、FileDaemonリソースの1つのパラメーターを調整する必要があります。 FDAddress
パラメーターを変更して、クライアントマシンのプライベートFQDNに一致させます。 Name
パラメーターには、クライアントファイルデーモン名が正しく入力されているはずです。 リソースは次のようになります(実際のFQDNまたはIPアドレスに置き換えてください)。
bacula-fd.conf —FDAddressを更新します
FileDaemon { # this is me Name = ClientHost-fd FDport = 9102 # where we listen for the director WorkingDirectory = /var/lib/bacula Pid Directory = /var/run/bacula Maximum Concurrent Jobs = 20 FDAddress = client_private_FQDN }
また、ログメッセージをバックアップサーバーに渡すようにこのデーモンを構成する必要があります。 メッセージリソースを見つけ、director
パラメータを変更して、バックアップサーバーのホスト名を「-dir」サフィックスと一致させます。 次のようになります。
bacula-fd.conf —アップデートディレクター
Messages { Name = Standard director = BackupServer-dir = all, !skipped, !restored }
ファイルを保存して終了します。 これで、ファイルデーモン(Baculaクライアント)がプライベートネットワーク経由の接続をリッスンするように構成されました。
次のコマンドを使用して、構成ファイルの構文が正しいことを確認します。
sudo bacula-fd -tc /etc/bacula/bacula-fd.conf
コマンドが出力を返さない場合、構成ファイルの構文は有効です。 ファイルデーモンを再起動して、新しい設定を使用します。
sudo service bacula-fd restart
Baculaサーバーがファイルを復元できるディレクトリを設定しましょう。 次のコマンドを使用して、ファイル構造を作成し、セキュリティのためにアクセス許可と所有権をロックダウンします。
sudo mkdir -p /bacula/restore sudo chown -R bacula:bacula /bacula sudo chmod -R 700 /bacula
これで、クライアントマシンが正しく構成されました。 次に、Baculaクライアントに接続できるようにバックアップサーバーを構成します。
ファイルセットの追加(サーバー)
Bacula FileSetは、バックアップ選択にファイルを含めたり除外したりするためのファイルまたはディレクトリのセットを定義し、Baculaサーバーのバックアップジョブによって使用されます。
Bacula Serverコンポーネントをセットアップする前提条件のチュートリアルに従った場合、「フルセット」と呼ばれるFileSetがすでにあります。 バックアップクライアント上のほぼすべてのファイルを含むバックアップジョブを実行する場合は、そのFileSetをジョブで使用できます。 ただし、サーバー上のすべてのバックアップが必要ない、または必要ない場合が多く、データのサブセットで十分である場合があります。
FileSetに含めるファイルをより選択的にすると、バックアップサーバーがバックアップジョブを実行するために必要なディスク容量と時間の量が減少します。 また、復元するファイルを見つけるために「フルセット」をふるいにかける必要がないため、復元が簡単になります。
バックアップするものをより選択できるように、新しいFileSetリソースを作成する方法を説明します。
Bacula Server で、前に作成したBaculaDirector構成ディレクトリにあるfilesets.conf
というファイルを開きます。
sudo vi /etc/bacula/conf.d/filesets.conf
バックアップジョブで使用する特定のファイルセットごとにFileSetリソースを作成します。 この例では、homeディレクトリとetcディレクトリのみを含むFileSetを作成します。
filesets.conf —ホームおよびその他のFileSetを追加します
FileSet { Name = "Home and Etc" Include { Options { signature = MD5 compression = GZIP } File = /home File = /etc } Exclude { File = /home/bacula/not_important } }
このファイルでは多くのことが行われていますが、次の点に注意してください。
- FileSet名は一意である必要があります
- バックアップしたいファイルまたはパーティションを含めます
- バックアップしたくないが、含まれているファイル内に存在する結果として選択されたファイルを除外します
必要に応じて、複数のファイルセットを作成できます。 終了したら、保存して終了します。
これで、新しいFileSetを使用するバックアップジョブを作成する準備が整いました。
クライアントとバックアップジョブをBaculaサーバーに追加する
これで、クライアントをBaculaサーバーに追加する準備が整いました。 これを行うには、新しいクライアントおよびジョブリソースを使用してBaculaDirectorを構成する必要があります。
conf.d/clients.conf
ファイルを開きます。
sudo vi /etc/bacula/conf.d/clients.conf
クライアントリソースの追加
クライアントリソースは、クライアントホストに接続するために必要な情報を使用してDirectorを構成します。 これには、クライアントのファイルデーモンの名前、アドレス、およびパスワードが含まれます。
このクライアントリソース定義をファイルに貼り付けます。 クライアントのホスト名、プライベートFQDN、およびパスワード(クライアントのbacula-fd.conf
から)を、強調表示されている場所に必ず置き換えてください。
conf.d/clients.conf —クライアントリソースを追加します
Client { Name = ClientHost-fd Address = client_private_FQDN FDPort = 9102 Catalog = MyCatalog Password = "IrIK4BHRA2o5JUvw2C_YNmBX_70oqfaUi" # password for Remote FileDaemon File Retention = 30 days # 30 days Job Retention = 6 months # six months AutoPrune = yes # Prune expired Jobs/Files }
これは、クライアントごとに1回だけ実行する必要があります。
バックアップジョブを作成します。
一意の名前が必要なバックアップジョブは、バックアップするクライアントとデータの詳細を定義します。
次に、このバックアップジョブをファイルに貼り付け、強調表示されたテキストをクライアントのホスト名に置き換えます。
conf.d/clients.conf —バックアップジョブリソースを追加します
Job { Name = "BackupClientHost" JobDefs = "DefaultJob" Client = ClientHost-fd Pool = RemoteFile FileSet="Home and Etc" }
これにより、「BackupClientHost」と呼ばれるバックアップジョブが作成されます。このジョブは、「Home andetc」ファイルセットで定義されているように、クライアントホストのホームディレクトリなどをバックアップします。 メインのbacula-dir.conf
ファイルで定義されている「DefaultJob」JobDefsおよび「RemoteFile」プールリソースで指定された設定を使用します。 デフォルトでは、JobDefs = "DefaultJob"
を指定するジョブは毎週実行されます。
完了したら、保存して終了します。
Directorの構成を確認する
Director構成ファイルに構文エラーがないことを確認しましょう。
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
シェルプロンプトに戻った場合、BaculaDirectorの構成ファイルに構文エラーはありません。
BaculaDirectorを再起動します
行った構成変更を有効にするには、BaculaDirectorを再起動します。
sudo service bacula-director restart
これで、クライアントまたはリモートホストがBaculaサーバーによってバックアップされるように構成されました。
クライアント接続のテスト
BaculaDirectorがBaculaクライアントに接続できることを確認する必要があります。
Baculaサーバーで、Baculaコンソールに入ります。
sudo bconsole
status client
Select Client resource: ClientHost-fdThe defined Client resources are: 1: BackupServer-fd 2: ClientHost-fd Select Client (File daemon) resource (1-2): 2
クライアントのファイルデーモンステータスはすぐに戻るはずです。 そうでない場合、および接続エラーがある場合は、Baculaサーバーまたはクライアントのファイルデーモンの構成に問題があります。
バックアップジョブのテスト
バックアップジョブを実行して、動作することを確認しましょう。
Bacula Server で、コンソールにいる間に、次のコマンドを使用します。
run
実行するジョブを選択するように求められます。 以前に作成したものを選択します。例: 「4。 BackupClientHost」:
Select Job resource: BackupClientHostThe defined Job resources are: 1: BackupLocalFiles 2: BackupCatalog 3: RestoreLocalFiles 4: BackupClientHost Select Job resource (1-4): 4
確認プロンプトで、「はい」と入力します。
Confirmation prompt: OK to run? (yes/mod/no): yes
メッセージとステータスを確認する
ジョブを実行した後、Baculaはメッセージがあることを通知します。 メッセージは、実行中のジョブによって生成された出力です。
次のように入力してメッセージを確認します。
messages
メッセージには、「以前の完全バックアップジョブレコードが見つかりません」と表示され、バックアップジョブが開始されたことが示されます。 エラーがある場合は、何かが間違っているので、ジョブが実行されなかった理由についてのヒントが得られるはずです。
ジョブのステータスを確認するもう1つの方法は、ディレクターのステータスを確認することです。 これを行うには、bconsoleプロンプトで次のコマンドを入力します。
status director
すべてが正常に機能している場合は、ジョブが実行中であるか、「OK」ステータスで終了していることを確認する必要があります。
復元を実行する
新しいBaculaClientを初めてセットアップするときは、復元が正しく機能することをテストする必要があります。
復元を実行する場合は、Baculaコンソールでrestore
コマンドを使用します。
restore all
選択メニューが表示され、復元元のバックアップセットを識別するために使用されるさまざまなオプションが表示されます。 バックアップは1つしかないため、「最新のバックアップを選択」してみましょう。オプション5を選択します。
Select item (1-13):5
次に、復元するクライアントを指定する必要があります。 セットアップしたばかりのリモートホストを復元したい。 「clientHost-fd」:
Select the Client: ClientHost-fdDefined Clients: 1: BackupServer-fd 2: ClientHost-fd Select the Client (1-2): 2
これにより、バックアップしたディレクトリ構造全体を含む仮想ファイルツリーに移動します。 このシェルのようなインターフェースにより、復元するファイルにマークを付けたり、マークを外したりするための簡単なコマンドが可能になります。
「すべてを復元」するように指定したため、バックアップされたすべてのファイルはすでに復元のマークが付けられています。 マークされたファイルは、先頭の*
文字で示されます。
選択を微調整したい場合は、「ls」および「cd」コマンドでファイルをナビゲートして一覧表示し、復元するファイルに「mark」でマークを付け、「unmark」でファイルのマークを外すことができます。 コンソールに「help」と入力すると、コマンドの完全なリストを利用できます。
復元の選択が終了したら、次のように入力します。
done
復元ジョブを実行することを確認します。
OK to run? (yes/mod/no):yes
メッセージとステータスを確認する
バックアップジョブと同様に、復元ジョブを実行した後、メッセージとDirectorのステータスを確認する必要があります。
次のように入力してメッセージを確認します。
messages
復元ジョブが開始されたか、「復元OK」ステータスで終了したことを示すメッセージが表示されるはずです。 エラーがある場合は、何かが間違っているので、ジョブが実行されなかった理由についてのヒントが得られるはずです。
繰り返しになりますが、Directorのステータスを確認することは、復元ジョブの状態を確認するための優れた方法です。
status director
復元が終了したら、exit
と入力して、Baculaコンソールを終了します。
exit
すべてが正常に機能した場合、復元されたファイルはクライアントホストの/bacula/restore
ディレクトリにあります。 単に復元プロセスをテストしている場合は、そのディレクトリの内容を削除する必要があります。
結論
これで、リモートのBaculaクライアントからファイルをバックアップしているBaculaサーバーができました。 ニーズに合ったスケジュールで正しいファイルセットをバックアップしていることが確実になるまで、構成を確認して修正してください。 CentOS 7ホストのバックアップを作成しようとしている場合は、次のリンクをたどってください:Baculaを使用してCentOS7サーバーをバックアップする方法。
次に行うべきことは、バックアップする追加のUbuntu 14.04サーバーについて、このチュートリアルの関連セクションを繰り返すことです。