はじめに
第3回までは、
今回は次のような項目を解説します。
- ディレクターデーモンの設定
- ストレージデーモンの設定
- クライアントデーモンの設定
- Baculaの設定を簡単にする小技
- バックアップ対象サーバの追加
ディレクターデーモン、

Baculaの設定
Baculaの設定ファイルは基本的に以下の4ファイルのみで実施するシンプルな設定ファイルです。
- /etc/
bacula/ bacula-dir. conf ディレクターデーモン設定 - /etc/
bacula/ bacula-sd. conf ストレージデーモン設定 - /etc/
bacula/ bacula-fd. conf クライアントデーモン設定 - /etc/
bacula/ bconsole. conf コンソール設定
またBaculaの設定値は、
上記の4つファイルの中身を見るとリソースの集合体になっています。それぞれのファイルにどのようなリソースが存在するかを設定値と共に解説します。
各リソースの基本書式は
- <ディレクティブ> = <設定値>
となり、
ディレクターデーモンの設定
ディレクターデーモンの設定を行います。設定ファイルは/etc/
ディレクターデーモンはBacula全体を管理する司令塔的な役割を持っています。カタログ
ディレクターデーモンには主に以下のリソースが存在します。
リソース名 | 内容 |
---|---|
Director | ディレクターデーモンの設定値を記載 |
Job | バックアップおよびリストアを実行するための指示書 |
FileSet | バックアップおよびリストアするディレクトリを指定 |
Schedule | バックアップおよびリストアの実行時間を指定 |
Client | バックアップおよびリストア対象となるサーバなどを指定 |
Storage | バックアップデータを保存するストレージを指定 |
Catalog | BaculaサーバのDB情報を記載 |
Messages | Baculaの通知に関する設定 バックアップ失敗時などにメールで通知するなどの設定ができます |
Pool | データの保存先の集合体 |
Console | Baculaを操作するためのconsole情報を記載 基本はbconsoleです |
Client、

次に各リソースを1つずつ解説します。ディレクターデーモンインストール直後の設定ファイルをサンプルとして解説します。
Directorリソース
Directorリソースではディレクターデーモンの基本設定を行います。
Director { # define myself Name = bacula-dir DIRport = 9101 # where we listen for UA connections QueryFile = "/etc/bacula/query.sql" WorkingDirectory = "/var/spool/bacula" PidDirectory = "/var/run" Maximum Concurrent Jobs = 20 Password = "bacula" # Console password Messages = Daemon }
ディレクターデーモンの名称および使用するポート、
Jobリソース
Jobリソースではバックアップおよびリストアを実行するための指示書となるJobを定義します。
Job { Name = "Backup-TestJob" Type = Backup Level = Full Client = bacula-fd FileSet = "Full Set" Schedule = "WeeklyCycle" Storage = File1 Messages = Standard Pool = File Priority = 10 Write Bootstrap = "/var/spool/bacula/%c.bsr" }
Jobの名前、
FileSetリソース
FileSetリソースではどのディレクトリおよびファイルをバックアップ対象とするかを定義します。
FileSet { Name = "Full Set" Include { Options { signature = MD5 compression = GZIP } File = /usr/sbin } Exclude { File = /var/spool/bacula File = /tmp File = /proc File = /tmp File = /sys File = /.journal File = /.fsck } }
Includeでバックアップ対象となるディレクトリを指定し、
Scheduleリソース
ScheduleリソースではJobを
Schedule { Name = "WeeklyCycle" Run = Full 1st sun at 23:05 Run = Differential 2nd-5th sun at 23:05 Run = Incremental mon-sat at 23:05 }
Scheduleリソースの名前と実行時間を定義します。上記の例では、
- 第一日曜23:05にバックアップ実行
- 第二~第五日曜23:05に差分バックアップ
- 平日月曜~土曜23:05に増分バックアップ実行
以上の3つのスケジュールを
Clientリソース
Clientリソースではバックアップおよびリストア対象となるクライアントを定義します。ここで定義した各クライアントにはファイルデーモンをインストールし適切な設定が必要になります。
Client { Name = bacula-fd Address = 192.168.2.1 FDPort = 9102 Catalog = MyCatalog Password = "bacula-pass" # password for FileDaemon File Retention = 60 days # 60 days Job Retention = 6 months # six months AutoPrune = yes # Prune expired Jobs/Files }
クライアントの名前とクライアントのIPアドレス、
Storageリソース
Storageリソースではどのストレージにバックアップデータを保存するか定義します。
# Definition of file Virtual Autochanger device Storage { Name = File1 # Do not use "localhost" here Address = 192.168.2.1 # N.B. Use a fully qualified name here SDPort = 9103 Password = "bacula-pass" Device = FileChgr1 Media Type = File1 Maximum Concurrent Jobs = 10 # run up to 10 jobs a the same time }
Storageリソースの名前、
Catalogリソース
CatalogリソースではBaculaが使用するカタログ
# Generic catalog service Catalog { Name = MyCatalog dbname = "bacula"; dbuser = "bacula"; dbpassword = "dbpass" }
カタログの名前とカタログ
Messageリソース
MessagesリソースではBaculaの通知に関する定義をします。
Messages { Name = Daemon mailcommand = "/usr/sbin/bsmtp -h localhost -f \"\(Bacula\) \\" -s \"Bacula daemon message\" %r" mail = root@localhost = all, !skipped console = all, !skipped, !saved append = "/var/log/bacula/bacula.log" = all, !skipped }
Jobが失敗した時などに指定したメールアドレスに通知することができます。各ディレクティブの詳細は
Poolリソース
Poolリソースはデータ保存先として使用するPoolを定義します。
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 Label Format = "Vol-" # Auto label }
Poolの名前、
ここでPool、

ストレージは名前の通りにバックアップデータを保存するデバイスを指します。PoolはStorageの箱を用意して、
デフォルトの設定値を利用してバックアップを取得している場合は/tmpを確認してみてください。Vol-0001というファイルが存在しているはずです。そのファイルがVolumeです。Volumeの保存先はbacula-sd.
Consoleリソース
ConsoleリソースはBaculaを操作するためのconsole情報を定義します。
Console { Name = bacula-mon Password = "bacula" CommandACL = status, .status }
Consoleリソースの名前とDirectorデーモンと通信するためのパスワードを指定します。各ディレクティブの詳細は
ストレージデーモンの設定
次にストレージデーモンの設定を行います。設定ファイルは/etc/
ストレージデーモンはバックアップしたデータを管理します。ストレージデーモンには主に以下のリソースが存在します。
リソース名 | 内容 |
---|---|
Storage | ストレージデーモンの設定値を記載 |
Director | ディレクターデーモンの設定値を記載 |
Autochanger | オートチェンジャーの設定を記載 |
Device | バックアップデータを保存するデバイス設定を記載 |
Messages | ストレージデーモンで使用するメッセージリソースを指定 |
Storageリソース
Storageリソースではストレージデーモンの基本設定を行います。
Storage { # definition of myself Name = bacula-sd SDPort = 9103 # Director's port WorkingDirectory = "/var/spool/bacula" Pid Directory = "/var/run" Maximum Concurrent Jobs = 20 }
Storageリソースの名称および使用するポート、
Directorリソース
Directorリソースではストレージデーモンとディレクターデーモンが通信するための設定を定義します。
Director { Name = bacula-mon Password = "bacula-pass" Monitor = yes }
各ディレクティブの詳細はこちらを参照ください。
Autochangerリソース
Autochangerリソースでは使用するAutochangerを定義します。
Autochanger { Name = FileChgr1 Device = FileChgr1-Dev1, FileChgr1-Dev2 Changer Command = "" Changer Device = /dev/null }
Autochangerの名称、
Deviceリソース
Deviceリソースではバックアップデータを保存するデバイスを定義します。
Device { Name = FileChgr1-Dev1 Media Type = File1 Archive Device = /tmp LabelMedia = yes; # lets Bacula label unlabeled media Random Access = Yes; AutomaticMount = yes; # when device opened, read it RemovableMedia = no; AlwaysOpen = no; Maximum Concurrent Jobs = 5 }
Deviceの名前、
Messagesリソース
Messageリソースはストレージデーモンで使用するメッセージリソースを指定します。
Messages { Name = Standard director = bacula-dir = all }
各ディレクティブの詳細は
ファイルデーモンの設定
次にファイルデーモンの設定を行います。設定ファイルは/etc/
ファイルデーモンはバックアップ対象機にインストールするエージェントです。役割として管理サーバのディレクターデーモンと通信して、
リソース名 | 内容 |
---|---|
Director | ディレクターの設定値を記載 |
FileDaemon | ファイルデーモンの設定値を記載 |
Messages | ファイルデーモンで使用するメッセージリソースを記載 |
Directorリソース
Directorリソースではファイルデーモンとディレクターデーモンが通信するための設定を定義します。
Director { Name = bacula-dir Password = "bacula7" }
各ディレクティブの詳細は
ファイルデーモンリソース
FileDaemonリソースではファイルデーモンの基本設定を行います。
FileDaemon { # this is me Name = bacula-fd FDport = 9102 # where we listen for the director WorkingDirectory = /var/spool/bacula Pid Directory = /var/run Maximum Concurrent Jobs = 20 Plugin Directory = /usr/lib64/bacula }
ファイルデーモンの名称および使用するポート、
Messagesリソース
Messagesリソースはファイルデーモンで使用するメッセージリソースを指定します。
Messages { Name = Standard director = bacula-dir = all, !skipped, !restored }
各ディレクティブの詳細は
bconsoleの設定
次にbconsoleの設定を行います。設定ファイルは/etc/
リソース名 | 内容 |
---|---|
Director | Directorリソースの設定 |
Directorリソース
Directorリソースではbconsoleとディレクターデーモンが通信するための設定を定義します。
Director { Name = bacula-dir DIRport = 9101 address = localhost Password = "bacula7" }
各ディレクティブの詳細は
Firewalldの設定
次にFirewalldの設定をします。Baculaはサービス名が登録されていますので、
# firewall-cmd --permanent --add-service=bacula success # firewall-cmd --permanent --add-port=9095/tcp success # firewall-cmd --reload success
念のため以下のコマンドでservicesにBaculaとportsに9095/
# firewall-cmd --list-all public (default, active) interfaces: enp0s3 sources: services: bacula dhcpv6-client ssh ports: 9095/tcp masquerade: no forward-ports: icmp-blocks: rich rules:
SELinux設定
BaculaはSELinuxがenforcingでも問題なく動作しますので、
設定反映
ここまでディレクターデーモン、
CentOS7の場合のコマンドはそれぞれ以下のようになります。
# systemctl restart bacula-dir # systemctl restart bacula-sd # systemctl restart bacula-fd
設定変更したデーモンのみの再起動で問題ありません。全てを再起動する必要はありません。
また、
# systemctl status bacula-dir # systemctl status bacula-sd # systemctl status bacula-fd
Baculaの設定を簡単にする小技
Baculaの設定は4つのファイルだけで非常にシンプルですが、
シンプルで良いのですが、
設定ファイル構文チェック
以下のコマンドで各ファイルの構文チェックを行うことができます。
# bacula-dir -tc /etc/bacula/bacula-dir.conf # bacula-fd -tc /etc/bacula/bacula-fd.conf # bacula-sd -tc /etc/bacula/bacula-sd.conf # bconsole -tc /etc/bacula/bconsole.conf
エラーが無い場合は何も表示されません。エラーがある場合は以下のように表示されます。
# bacula-dir -tc /etc/bacula/bacula-dir.conf bacula-dir: ERROR TERMINATION at parse_conf.c:940 Config error: Expected a Resource name identifier, got: err_test : line 17, col 8 of file /etc/bacula/bacula-dir.conf err_test 24- 1月 17:56 bacula-dir: ERROR TERMINATION at parse_conf.c:940 Config error: Expected a Resource name identifier, got: err_test : line 17, col 8 of file /etc/bacula/bacula-dir.conf err_test
わざとerr_
設定ファイルを短くする
Bacula設定ファイルは4つだけと解説しましたが、
そこで設定ファイルの行数を減らす手順を解説します。例としてbacula-dir.
bacula-dir.
job.
- /etc/
bacula/ job. list ジョブリスト - /etc/
bacula/ client. list クライアントリスト
@/etc/bacula/job.list @/etc/bacula/client.list
以上のように記載するだけでジョブリストとクライアントリストを外部ファイルとして読み込むことができます。ファイル名は任意の名前を付けることができます。
バックアップ対象を追加
設定方法を細かく解説したところで、

図4の192.
リポジトリ追加
まずリポジトリを追加します。
# yum -y install wget # cd /etc/yum.repos.d/ # wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo
ファイルデーモンのインストール
次にファイルデーモンのみインストールします。
# yum -y install bacula-client # cd /etc/yum.repos.d/ # wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo
ファイルデーモンの設定
次にbacula-fd.
設定ファイル/etc/
ファイルデーモンの起動
設定が終わったらbacula-fdを起動します。起動と共に自動起動設定も実施します。起動後に起動確認を行います。
# systemctl start bacula-fd # systemctl enable bacula-fd # systemctl status bacula-fd
ジョブ登録
管理サーバ側で設定します。管理サーバではクライアントを追加し、
以下bacula-dir.
Clientリソース
Client { Name = Cent7_Server Address = 192.168.2.2 FDPort = 9102 Catalog = MyCatalog Password = "bacula7" # password for FileDaemon File Retention = 60 days # 60 days Job Retention = 6 months # six months AutoPrune = yes # Prune expired Jobs/Files }
192.
Jobリソース
Job { Name = " Cent7_Backup" Type = Backup Level = Fulll Client = Cent7_ Server FileSet = "Full Set" Schedule = "WeeklyCycle" Storage = File1 Messages = Standard Pool = File SpoolAttributes = yes Priority = 10 Write Bootstrap = "/var/ spool/ bacula/%c. bsr" }
次にジョブを追加しました。ジョブ名を
設定を反映させるためにディレクターデーモンを再起動します。
# systemctl restart bacula-dir
無事に再起動が完了したことを確認しておきましょう。
# systemctl status bacula-dir
ディレクターデーモンの各リソースのディレクティブ解説
各リソースのディレクティブを解説します。
4-1.Directorリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | ディレクターリソースの名称 |
DIRport | 9101 | ディレクターデーモンが使用するポート |
QueryFile | /etc/ | Queryコマンド使用時のSQLファイル格納先 |
WorkingDirectory | /var/ | ディレクターデーモンの作業ディレクトリ |
PidDirectory | /var/ | プロセスIDを格納するディレクトリ |
Maximum Concurrent Jobs | 任意のジョブ数 | 同時に実行可能なジョブ数 |
Password | 任意のパスワード | 他のデーモンがディレクターデーモンへアクセスする際のパスワード |
Messages | 任意のメッセージリソース名 | ディレクターデーモンが使用するメッセージリソース |
4-2.Jobリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Jobリソースの名称 |
Type | Backup/ | ジョブのタイプを指定 Backu バックアップJOB restore リストア用JOB |
Level | Full Incremental Differential | バックアップのレベル指定 Full フルバックアップ Incremental 増分バックアップ Differential 差分バックアップ |
Client | 任意のクライアント名 | バックアップするクライアントを指定 詳細はクライアントリソースに定義 |
FileSet | 任意のファイルセット名 | バックアップするディレクトリを指定 詳細はファイルセットリソースに定義 |
Schedule | 任意のスケジュール名 | バックアップを実行するスケジュールを指定 詳細はスケジュールリソースに定義 |
Storage | 任意のストレージ名 | バックアップするデータを保存するストレージを指定 詳細はストレージリソースに定義 |
Messages | 任意のメッセージ名 | 使用するメッセージリソースを指定 詳細はメッセージリソースに定義 |
Pool | 任意のポール名 | バックアップするデータを保存するプールを指定 詳細はプールリソースに定義 |
Priority | 任意の優先度 | ジョブの優先度を設定 デフォルトは10 |
Write Bootstrap | /var/ |
FileSetリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | FileSetリソースの名称 |
Include | File = <ディレクトリ> File = <ファイル名> | バックアップ対象とするファイル名およびディレクトリを指定する |
Options | Includeのオプション設定 | |
signature | signature = MD5 signature = SHA1 | ハッシュ関数を指定 |
compression | compression = GZIP compression = LZO | 圧縮の形式を指定 GZIPは圧縮レベルを指定 圧縮率はGZIP9が高く、 GZIPと指定するとGZIP6と同様 |
Exclude | File = <ディレクトリ> File = <ファイル名> | バックアップ対象外とするファイル名およびディレクトリを指定 |
Scheduleリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Scheduleリソースの名称 |
Run | 条件式を指定 | Jobを実行するレベルと実行日時を指定 |
Clientリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Clientリソースの名称 |
Address | IPアドレス | 対象となるサーバおよびクライアントのIPアドレス |
FDPort | 9102 | ファイルデーモンが使用するポート |
Catalog | カタログ名 | インストール時に指定したデータベース名を指定 |
Password | 任意のパスワード | ファイルデーモンと通信するためのパスワード |
File Retention | 任意の日数 | バックアップデータ保存期間 |
Job Retention | 任意の日数 | 実行Jobの保存期間 |
AutoPrune | yes / no | 自動削除の有無 |
Storageリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Storageリソースの名称 |
Address | IPアドレス | ストレージデーモンがインストールされているサーバを指定 |
SDPort | 9103 | ストレージデーモンが使用するポート |
Password | 任意のパスワード | ストレージデーモンと通信するためのパスワード |
Device | 任意のデバイス名 | バックアップデータを保存するデバイスを指定 bacula-sd. |
Media Type | 任意のプール名 | バックアップデータを保存するPoolを指定 Poolリソースにて定義 |
Maximum Concurrent Jobs | 任意のJOB数 | 同時実行可能なJOB数 |
Catalogリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Catalogリソースの名称 |
dbname | 管理サーバインストール時のDB名称 | データベースの名称 |
dbuser | 管理サーバインストール時に設定したDBアクセスユーザ名 | データベースへアクセスするユーザ名 |
dbpassword | 管理サーバインストール時に設定したDBアクセスパスワード | データベースへアクセスするユーザ名 |
Messageリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Messageリソースの名称 |
mailcommand | 任意のメールコマンド | 実行するメールコマンド |
任意のメール送信先 | メール送信先 | |
console | 許可する権限指定 | コンソール設定 |
append | ログ出力先 | ログ出力先 |
Poolリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Poolリソースの名称 |
Pool Type | Backupで固定 | Poolタイプを設定 基本的にBackupを指定 |
Recycle | yes/ | 保存するPoolの再利用を指定 |
AutoPrune | yes/ | Volume Retentionで指定した日数経過後の自動削除を指定 yesは自動削除。noは自動削除しない |
Volume Retention | 任意の日数を指定 | ボリュームの保存日数を指定 指定した日数を超えないとボリュームは削除できない |
Maximum Volume Bytes | 任意のボリューム容量を指定 | 最大ボリューム容量を指定 |
Maximum Volumes | 任意のボリューム数を指定 | 最大ボリューム数を指定 |
Label Format | 任意のラベルフォーマット | ラベルフォーマットを指定 |
Consoleリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Consoleリソースの名称 |
Password | 任意のパスワード | コンソールへアクセスする際のパスワードを指定 |
CommandACL | 許可するコンソール操作記述 | コンソールACL設定 |
ストレージデーモンの各リソースのディレクティブ解説
各リソースのディレクティブを解説します。
Storageリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | ストレージデーモンの名称 |
SDPort | 9103 | ストレージデーモンが使用するポート |
WorkingDirectory | /var/ | ストレージデーモン が使用する作業ディレクトリ |
Pid Directory | /var/ | プロセスIDを格納するディレクトリ |
Maximum Concurrent Jobs | 任意のJob数 | 同時実行可能なJob数 |
Directorリソースの各ディレクティブの意味を以下に記載します。
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | Directorに設定されているDirector名称 | Directorリソースの名称 |
Password | Directorに設定されているDirectorのパスワード | Directorへアクセスする際のパスワード |
Monitor | yes/ | ディレクターからのアクセス権限 |
Autochangerリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Autochangerリソースの名称 |
Device | 任意の名称 | デバイスの名称 |
Changer Command | 実行するコマンド | Autochangerコマンド |
Changer Device | Autochangerデバイス | Autochangerデバイス |
Deviceリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意のデバイス名称 | Deviceリソースの名称 |
Media Type | 使用するPool名を指定 | メディアタイプを指定 |
Archive Device | 保存先のパスを指定 | バックアップデータ保存先を指定 |
LabelMedia | yes/ | ラベルメディアの指定 |
Random Access | yes/ | ランダムアクセスの指定 |
AutomaticMount | yes/ | 自動マウントの指定 |
RemovableMedia | yes/ | リムーバブルメディアの指定 |
AlwaysOpen | yes/ | デバイスオープンの指定 |
Maximum Concurrent Jobs | 任意のJOB数 | 同時実行JOB数 |
Messageリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Messagesリソースの名称 |
director | Directorリソース名を記載 | Directorリソース名指定 |
ファイルデーモンの各リソースのディレクティブ解説
各リソースのディレクティブを解説します。
Directorリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | Directorに設定されているDirector名称 | Directorリソースの名称 |
Password | Directorに設定されているDirectorのパスワード | Directorへアクセスする際のパスワード |
FileDemonリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | ファイルデーモンの名称 |
FDport | 9102 | ファイルデーモンが使用するポート |
WorkingDirectory | /var/ | ファイルデーモンが使用する作業ディレクトリ |
Pid Directory | /var/ | プロセスIDを格納するディレクトリ |
Maximum Concurrent Jobs | 任意のJob数 | 同時実行可能なJob数 |
Plugin Directory | /usr/ | プラグイン格納ディレクトリ |
Messageリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Messageリソースの名称 |
director | Directorリソース名を記載 | Directorリソース指定 |
コンソールの各リソースのディレクティブ解説
各リソースのディレクティブを解説します。
Directorリソース
ディレクティブ | 設定値 | 内容 |
---|---|---|
Name | 任意の名称 | Directorリソースの名称 |
DIRport | 9102 | ディレクターデーモンが使用するポート |
address | IPアドレス | Directorが存在するサーバのIPアドレスを指定 |
Password | 任意のパスワード | Directorへアクセスする際に使用するパスワード |