前書き
Baculaは、コンピューターシステムのバックアップを作成し、データ回復を実行できるオープンソースのネットワークバックアップソリューションです。非常に柔軟で強力なため、構成が少し面倒で、多くの状況でのバックアップに適しています。データ損失からの回復は通常、災害回復計画の重要な部分であるため、バックアップシステムはほとんどのサーバーインフラストラクチャで重要なコンポーネントです。
このチュートリアルでは、Ubuntu14.04サーバーにBaculaのサーバーコンポーネントをインストールして構成する方法を示します。毎週のジョブを実行し、ローカルバックアップ(つまり、独自のホストのバックアップ)を作成するようにBaculaを構成します。これ自体はBaculaの特に魅力的な使用法ではありませんが、他のサーバー(つまり、バックアップクライアント)のバックアップを作成するための良い出発点を提供します。このシリーズの次のチュートリアルでは、Baculaクライアントをインストールして構成し、Baculaサーバーを構成することにより、他のリモートサーバーのバックアップを作成する方法を紹介します。
sudo
コマンドを使用できる非rootアカウントを持つUbuntu サーバーがセットアップされ、ファイアウォールがオンになっています。サーバーをお持ちでない方は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使って実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。
bacula.private.example.com
などのサーバーのプライベートFQDNを使用するようにBaculaを構成します。 DNS設定がない場合は、代わりに対応するIPアドレスを使用してください。プライベートネットワークを有効にしていない場合は、このチュートリアルのすべてのネットワーク接続情報を、関連するサーバーからアクセスできるネットワークアドレス(たとえば、パブリックIPアドレスやV **トンネル)に置き換えてください。
まず、Baculaコンポーネントの概要を見てみましょう。
Baculaはいくつかのソフトウェアコンポーネントで構成されていますが、サーバークライアントバックアップモデルに従います。説明を簡単にするために、単一のBaculaコンポーネントではなく、バックアップサーバーと**バックアップクライアントに焦点を当てます。それでも、さまざまなBaculaコンポーネントを大まかに理解することは依然として重要なので、ここでそれらについて説明します。
「バックアップサーバー」とも呼ばれるBacula ** Server **には、次のコンポーネントがあります。
注:Baculaサーバーコンポーネントは同じサーバー上で実行する必要はありませんが、連携してバックアップサーバー機能を提供します。
バックアップするサーバーであるBacula ** Client は、 File Daemon(FD)**コンポーネントを実行します。ファイルデーモンは、Baculaサーバー(特にDirector)にバックアップするデータへのアクセスを提供するソフトウェアです。これらのサーバーを「バックアップクライアント」または「クライアント」とも呼びます。
はじめに述べたように、独自のファイルシステムのバックアップを作成するようにバックアップサーバーを構成します。これは、バックアップサーバーがバックアップクライアントでもあり、ファイルデーモンコンポーネントを実行することを意味します。
インストールを始めましょう。
Baculaは、SQLデータベース(MySQLやPostreSQLなど)を使用してバックアップディレクトリを管理します。このチュートリアルではMySQLを使用します。
まず、apt-getを更新します。
sudo apt-get update
次に、apt-getを使用してMy [SQL Server](https://cloud.tencent.com/product/sqlserver?from=10680)をインストールします。
sudo apt-get install mysql-server
MySQLデータベース管理ユーザーrootのパスワードを入力するように求められます。パスワードを入力して確認します。
このパスワードはBaculaのインストールプロセス中に使用されるため、覚えておいてください。
apt-getを使用して、Baculaサーバーとクライアントコンポーネントをインストールします。
sudo apt-get install bacula-server bacula-client
Baculaが使用するPostfixの構成に使用されるいくつかの情報を入力するように求められます。
次に、Baculaデータベースの設定に使用する情報を入力するように求められます。
インストールの最後のステップは、Baculaがカタログバックアップジョブで使用するスクリプトのアクセス許可を更新することです。
sudo chmod 755/etc/bacula/scripts/delete_catalog_backup
これで、Baculaサーバー(およびクライアント)コンポーネントがインストールされました。バックアップと復元のディレクトリを作成しましょう。
Baculaには、バックアップアーカイブを保存するための** backup ディレクトリと復元されたファイルが配置される restore **ディレクトリが必要です。システムに複数のパーティションがある場合は、十分なスペースのあるディレクトリにディレクトリを作成してください。
次の2つの目的で新しいディレクトリを作成しましょう。
sudo mkdir -p /bacula/backup /bacula/restore
baculaプロセス(およびスーパーユーザー)のみがこれらの場所にアクセスできるように、ファイルのアクセス許可を変更する必要があります。
sudo chown -R bacula:bacula /bacula
sudo chmod -R 700/bacula
これで、BaculaDirectorを構成する準備が整いました。
Baculaには、正しく機能するために個別に構成する必要のあるいくつかのコンポーネントがあります。構成ファイルは / etc / bacula
ディレクトリにあります。
バキュラ監督から始めましょう。
お気に入りのテキストエディタでBaculaDirector構成ファイルを開きます。 viを使用します:
sudo vi /etc/bacula/bacula-dir.conf
Baculaジョブは、バックアップおよび復元操作を実行するために使用されます。ジョブリソースは、クライアントの名前、バックアップまたは復元するFileSetなど、特定のジョブが実行する操作の詳細情報を定義します。
ここでは、ローカルファイルシステムのバックアップを実行するために使用されるジョブを構成します。
Director構成で、「BackupClient1」という名前のジョブリソースを見つけます(「BackupClient1」を検索します)。 Name
の値を" BackupLocalFiles "に変更して、次のようにします。
Job {
Name ="BackupLocalFiles"
JobDefs ="DefaultJob"}
次に、「RestoreFiles」という名前の** job **リソースを見つけます(「RestoreFiles」を検索します)。この作業では、「Name」の値を「RestoreLocalFiles」に更新することと、「Where」の値を「/ bacula / restore」に更新することの2つを変更します。次のようになります。
Job {
Name ="RestoreLocalFiles"
Type = Restore
Client=BackupServer-fd
FileSet="Full Set"
Storage = File
Pool = Default
Messages = Standard
Where =/bacula/restore
}
これにより、RestoreLocalFilesジョブが構成され、 / bacula / restore
ファイルが前に作成したディレクトリに復元されます。
Bacula FileSetは、バックアップ選択にファイルを含めるまたは除外し、ジョブで使用するファイルまたはディレクトリのセットを定義します。
「フルセット」という名前のFileSetリソースを見つけます(コメント「#バックアップするファイルのリスト」にあります)。ここでは、3つの変更を行います。(1)gzipを使用してバックアップを圧縮するオプションを追加し、(2)インクルードファイルを / usr / sbin
から/
に変更し、(3)2番目の除外ファイルを変更します。 / bacula
に変更します。コメントを削除すると、次のようになります。
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
を除外します。
注:/にパーティションがマウントされていて、これらのパーティションをFileSetに含めたい場合は、パーティションごとにファイルレコードを追加する必要があります。
幅広いファイルセット(「フルセット」など)が常にバックアップジョブで使用される場合、バックアップには、バックアップ選択のより具体的なディスクスペースよりも多くのディスクスペースが必要になることに注意してください。たとえば、カスタム構成ファイルとデータベースを含むFileSetだけで十分な場合があります。明確な回復計画がある場合は、必要なソフトウェアパッケージをインストールし、回復したファイルを適切な場所に配置するように詳細に指定し、1つだけを使用します。バックアップアーカイブ用のディスクスペースのごく一部。
Bacula Director構成ファイルで、Storageリソースは、Directorが接続する必要のあるStorageDaemonを定義します。実際のストレージデーモンを短時間で構成します。
ストレージリソースを見つけて、Addressの値を localhost
バックアップサーバーの専用FQDN(または専用IPアドレス)に置き換えます。次のようになります(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が使用するセーブセットを定義します。ストレージボリュームとしてファイルを使用します。ローカルバックアップに適切なラベルが付けられるように、ラベルを更新する必要があります。
「File」という名前のプールリソース(コメント「#FilePooldefinition」の下にあります)を見つけて、ラベル形式を指定する行を追加します。完了すると、次のようになります。
# 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
}
保存して終了。これで、BaculaDirectorの構成がようやく完了しました。
Director構成ファイルに構文エラーがないことを確認しましょう。
sudo bacula-dir -tc /etc/bacula/bacula-dir.conf
エラーメッセージがない場合、 bacula-dir.conf
ファイルには構文エラーはありません。
次に、ストレージデーモンを構成します。
Baculaサーバーはほぼセットアップされていますが、ストレージデーモンを構成する必要があるため、Baculaはバックアップを保存する場所を認識しています。
お気に入りのテキストエディタでSD構成を開きます。 viを使用します:
sudo vi /etc/bacula/bacula-sd.conf
ストレージリソースを見つけます。これは、SDプロセスが接続をリッスンする場所を定義します。 SDAddress
パラメータを追加し、バックアップサーバーの専用FQDN(または専用IPアドレス)に割り当てます。
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」を検索)、バックアップディレクトリに一致するように「ArchiveDevice」の値を更新します。
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;}
保存して終了。
StorageDaemon構成ファイルに構文エラーがあるかどうかを確認しましょう。
sudo bacula-sd -tc /etc/bacula/bacula-sd.conf
エラーメッセージがない場合、 bacula-sd.conf
ファイルには構文エラーはありません。
Baculaの設定が完了しました。 Baculaサーバーコンポーネントを再起動する準備ができました。
行った構成変更を有効にするには、次のコマンドを使用してBaculaDirectorとStorageDaemonを再起動します。
sudo service bacula-director restart
sudo service bacula-sd restart
両方のサービスが再起動されたので、バックアップジョブを実行して、サービスが正しく機能しているかどうかをテストしましょう。
Baculaコンソールを使用して最初のバックアップジョブを実行します。問題なく動作する場合は、Baculaが正しく構成されていることがわかります。
次に、次のコマンドを使用してコンソールに入ります。
sudo bconsole
これにより、 *
プロンプトで示されるBaculaConsoleプロンプトが表示されます。
最初に label
コマンドを発行します。
label
ボリューム名を入力するように求められます。任意の名前を入力してください。
MyVolume
次に、バックアップで使用するプールを選択します。以前に構成した「ファイル」プールを使用し、「2」と入力します。
2
Baculaは、バックアップ用のデータを書き込む方法を認識しました。これで、バックアップを実行して、機能しているかどうかをテストできます。
run
実行するジョブを選択するように求められます。 「BackupLocalFiles」ジョブを実行したいので、プロンプトで「1」を入力します。
1
「バックアップジョブの実行」確認プロンプトで詳細を確認し、「はい」と入力してジョブを実行します。
yes
仕事を終えた後、バキュラはあなたにニュースがあることを教えてくれます。メッセージは、ジョブの実行によって生成された出力です。
メールを確認するには、次のように入力します。
messages
「以前の完全なバックアップジョブレコードが見つかりませんでした」というメッセージが表示され、バックアップジョブが開始されました。エラーがある場合、それは間違っており、ジョブが実行されていないことを示唆するはずです。
ジョブのステータスを確認するもう1つの方法は、ディレクターのステータスを確認することです。これを行うには、bconsoleプロンプトで次のコマンドを入力します。
status director
すべて問題がなければ、作業が実行されていることがわかります。このようなもの:
Running Jobs:
Console connected at 09-Apr-1512:16
JobId Level Name Status
======================================================================3 Full BackupLocalFiles.2015-04-09_12.31.41_06 is running
====
作業が完了すると、以下に示すように、ステータスレポートの[終了したジョブ]セクションに移動します。
Terminated Jobs:
JobId Level Files Bytes Status Finished Name
====================================================================3 Full 161,124877.5 M OK 09-Apr-1512:34 BackupLocalFiles
「OK」ステータスは、バックアップジョブが問題なく実行されていることを意味します。おめでとう! Baculaサーバーの「フルセット」バックアップがあります。
次のステップは、復元ジョブをテストすることです。
バックアップが作成されたので、正しく復元できるかどうかを確認することが重要です。 restore
コマンドを使用すると、バックアップされたファイルを復元できます。
実例を示すために、最後のバックアップからすべてのファイルを復元します。
restore all
復元元のバックアップセットを識別するためのさまざまなオプションを含む選択メニューが表示されます。バックアップは1つしかないので、「最新のバックアップを選択」しましょう。オプション5を選択します。
5
クライアントはBaculaサーバーの1つしかないため、自動的に選択されます。
次のプロンプトでは、使用するFileSetを尋ねられます。 「フルセット」を選択します。2になります。
2
これにより、バックアップしたディレクトリ構造全体を含む仮想ファイルツリーに移動します。このシェルのようなインターフェースにより、復元するファイルにマークを付けたり、マークを外したりする簡単なコマンドが可能になります。
「すべて復元」を指定したため、すべてのバックアップファイルに復元のマークが付けられています。マークされたファイルは、先頭の *
文字で表されます。
選択を微調整する場合は、「ls」および「cd」コマンドを使用してファイルをナビゲートおよびリストし、「mark」を使用して復元するファイルにマークを付け、「unmark」を使用してファイルのマークを解除します。コンソールで「help」と入力すると、コマンドの完全なリストを取得できます。
リカバリの選択が完了したら、次のように入力します。
done
復元ジョブを実行することを確認します。
yes
バックアップジョブと同様に、復元ジョブを実行した後、メッセージとディレクターのステータスを確認する必要があります。
メールを確認するには、次のように入力します。
messages
復元ジョブが開始または終了し、「通常の復元」ステータスになったことを示すメッセージが表示されます。エラーがある場合、それは間違っており、ジョブが実行されていないことを示唆するはずです。
同様に、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セットアップが完了しました。次のステップは、データが失われた場合にそれらを復元するために、バックアップクライアントとして他のサーバーを追加することです。
その他のUbuntuチュートリアルについては、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Ubuntu14.04にBaculaサーバーをインストールする方法」
Recommended Posts