設定ファイルの構文と規則

投稿者: | 2014年6月11日

Bacula の各プログラムは、起動時にデフォルトまたはコマンドラインで指定されたbacula-dir.confbacula-fd.confbacula-sd.conf、またはconsole.conf を読み込む。それぞれ、ディレクタデーモ、ファイルデーモン、ストレージデーモン、コンソールプログラム用の設定ファイルである。

ディレクタ、クライアント、ストレージ、コンソールは、リソースのセットを定義している、それぞれ専用の設定ファイルを持っている。これらのリソースは互いによく似ている、サービスごとに異なるディレクティブ(レコード) を含んでいることがある。たとえば、ディレクタのリソースファイルでは、Director リソースはディレクタの名前、いくつかのグローバルなディレクタのパラメータ、ディレクタのパスワードを含んでいる。ファイルデーモン設定ファイルでは、そのファイルデーモンにアクセスできるディレクタの情報がDirector リソースに登録されている。

Bacula を初めて稼働させる前に、それぞれのデーモン設定ファイルを確認して、必要に応じて修正する必要がある。Bacula のインストール時にデフォルトの設定ファイルが作成されるが、システム構成や目的に合わせて修正する必要がある。デーモンごとのリソースの概要は下図のようになる。

リソース早見表

文字セット

Bacula はUS ASCII、ドイツ語、フランス語、日本語、中国語など、世界のほとんどの文字セットを扱えるように設計されている。ただし、これらすべてはUTF-8 でエンコードされることを前提としており、したがってBacula のすべての設定ファイル(Win32 上で読み込まれるファイルも含む) はUTF-8 フォーマットにしなければならない。Linux の多くのデフォルトのエンコードはUTF-8 だが、すべてのUnix マシンがそうなっているわけではなく、WindowsもUTF-8 ベースではない。このため、Bacula を使い始める前に、適切なロケールを設定する必要がある。

各国語を含むBacula 設定ファイルが正しく読み込まれるようにするには、.UTF-8 で終る値をLANG 環境変数に設定する。たとえばja_JP.UTF-8 など。なお、適切な構文はOS によって異なることがある。Win32 マシンで設定ファイルを編集する場合は、メモ帳(notepad) を使って、保存するときにUTF-8 エンコーディングで保存するとよい。

Bacula はLinux、Unix マシンのファイル名はUTF-8 エンコードされていると想定する。Win32ではUnicode(UTF-16) だが、自動的にUTF-8 に変換される。

ディレクティブの構文

すべてのディレクティブを詳細に知る必要はないが、Bacula リソースのディレクティブに関する基本的な知識を持っておくことは必要である。リソースを構成するすべてのディレクティブは中括弧({および}) で囲まれ、キーワード、等号(=)、そして値の順に記載する。キーワードは、Bacula がリソースの属性として理解できる名前で、大文字、小文字、スペースで構成される。

すべてのリソース定義にName ディレクティブが必要で、オプションでDescription ディレクトリを指定してリソースの説明文を記述してもよい。Name ディレクティブはリソースを一意に特定するための名前である。Description ディレクティブは、リソースの内容を人が見て理解しやすくするために使われる。たとえば、次の例は、

Director {
  Name = "MyDir"
  Description = "Main Bacula Director"
  WorkingDirectory = "$HOME/bacula/bin/working"
}

Director リソースを定義している。その名前は”MyDir”で、作業ディレクトリに$HOME/bac-
ula/bin/working を指定している。最初に出現する等号(=) の右辺に指定する値がスペースを含むときは、値全体を複引用符で囲む必要がある。そうでない場合は引用符で囲まなくてもよい。

コメント

設定ファイルの空白行は無視され、ハッシュ記号(#) から行末までのすべてのテキストはコメントとみなされる。セミコロン(;) は論理的な行の終わりを示し、セミコロン以降は次のステートメントになる。1 つの行が1 つのステートメントを構成する場合には、ステートメント末尾のセミコロンは省略できる。実際、本書の例のほとんどがこの形式になっているため、セミコロンはほとんど使っていない。

大文字、小文字、およびスペース

ディレクティブのキーワード(すなわち等号の左側) では、大文字と小文字は区別されず、スペースは完全に無視される。

<<削除キーワード内では(例えば等号の左側)、スペースは意味を持ちません。>>このため、name、Name、N a m e はすべてname というキーワードとして取り扱われる。

等号と値の間のスペース文字は無視される。

一般的に、値の中でのスペースは意味がある文字とみなされて無視されない。名前などの値にスペースを含めたい場合には、値全体を複引用符で囲む必要がある。最大127 文字の名前を指定できる。現在のところ、名前に使える文字はASCII 文字のみである(日本語は使えない)。複引用符で囲んだ文字列の一部に複引用符自身やバックスラッシュを使いたい場合は、バックスラッシュ(\) に続けてそれらの文字を書く。

ただし、Bacula のリソース名やボリューム名などの名前に使える文字は、アルファベット(ISOアクセント付き文字を含む)、数字、いくつかの記号(スペース、下線. . . ) に限定される。その他の文字や句読点は使えない。

設定ファイルのインクルード

設定ファイルは、複数の断片的なファイルに分割でき、分割したファイル名を@filename という構文でインクルードできる。ここで、filename は、インクルードするファイルのフルパスとファイル名である。@filename は、プリミティブを書ける場所であれば、設定ファイルの任意の場所に指定できる。

あるディレクトリの下の全ファイルをインクルードしたい場合には、下の例のようにワイルドカードも使える。

# Include subfiles associated with configuration of clients.
# They define the bulk of the Clients, Jobs, and FileSets.
# Remember to "reload" the Director after adding a client file.
#
@|"sh -c 'for f in /etc/bacula/clientdefs/*.conf ; do echo @${f} ; done'"

プリミティブのデータタイプ

Bacula がリソースのディレクトリを読み込んで解釈するとき、値は以下のどれかのタイプに分類される。このような区別は面倒に思えるが、実際には論理的で直感的とも言える。

name
英数字、ハイフン、下線、ドル記号で構成されるキーワードまたは名前。name の先頭はアルファベットでなければならない。name の最大長は現在は127 バイトである。典型的には、等号の左側に書くBacula キーワード、すなわちリソースを示すキーワードやディレクティブの名前が該当する。キーワードは複引用符で囲まない。
name-string
name と似ているが、複引用符で囲めばname では使えない文字(スペースを含む) も含めることができる。最大長は127 文字である。name-string は等号の右側に指定する。すなわち、等号の左辺に書いたキーワードに対応する値になる。
string
任意の文字で構成される文字列で、長さも任意である。ファイル名、ディレクトリ名、システムコマンドなどが該当する。バックスラッシュ(\) の次の文字はその文字そのものと解釈される。したがって、複引用符そのものをstring の一部として扱うには、バックスラッシュと複引用符を続けて書く。バックスラッシュ文字も同様である。
directory
引用符で囲むかどうかは任意である。directory は、標準シェルに引き渡されて変数展開される。このため、$HOME のような要素はその変数の値として正しく解釈される。
password
Bacula パスワードで、内部的にはMD5 ハッシュ化して保存される。
integer
符号付き32 ビット整数値。
positive integer
32 ビットの正の整数。
long integer
64 ビット整数値。バイト数のように、約42 億を超える可能性がある値は、64ビット整数として取り扱う必要がある。
yes|no
yes またはno を指定する。
size
バイト数。整数だけでなく小数点以下の値を指定してもよく、下記の適切な修飾子を指定してもよい。この値は、内部的には64 ビット整数値として格納される。修飾子を使う場合は、数値の直後にスペースを入れずに書かなければならない。以下の修飾子を指定できる。

k
1,024 (キビバイト)
kb
1,000 (キロバイト)
m
1,048,576 (メビバイト)
mb
1,000,000 (メガバイト)
g
1,073,741,824 (ギビバイト)
gb
1,000,000,000 (ギガバイト)

 

time
時間または時間間隔は秒単位の値だが、数値部分と修飾子を組み合わせて表示し、内部的には64 ビット整数値として格納される。数値部分は整数でも浮動小数値でもかまわない。浮動小数値は最も近い整数値に丸められる。修飾子は必須であり、数値の直後にスペースを入れずに指定する。以下の修飾子を指定できる。

seconds
minutes
 分(60 秒)
hours
時間 (3600 秒)
days
 日(3600*24 秒)
weeks
週(3600*24*7 秒)
months
月 (3600*24*30 秒)
quarters
四半期 (3600*24*91 秒)
years
年 (3600*24*365 秒)

 

seconds の代わりにsec またはs と記載するような一般的な略記法も利用できる。ただし、m はmonth と解釈されるので注意が必要である。

数字と修飾子の組を複数組み合わせて指定してもよい。たとえば、次の例は、

 

1 week 2 days 3 hours 10 mins
1 month 2 days 30 sec

 

いずれも正しい日付の指定である。

 

リソースの種類

現バージョンのBacula が認識するリソースは、下表のとおりである。どのリソースがどのサービス(デーモン) で定義できるかを示している。デフォルトの設定ファイルには、指定できるリソースの例を少なくとも1 つは記載してある。したがって、リソースをすべてゼロから書き起こす必要はない。

リソース ディレクタ クライアント ストレージ コンソール
Autochanger No No Yes No
Catalog Yes No No No
Client Yes Yes No No
Console Yes No No Yes
Device No No Yes No
Director Yes Yes Yes Yes
FileSet Yes No No No
Job Yes No No No
JobDefs Yes No No No
Message Yes Yes Yes No
Pool Yes No No No
Schedule Yes No No No
Storage Yes No Yes No

 


名前、パスワード、および認証

デーモンが他のデーモンに接続するには、パスワードベースの認証が必要である。ほとんどのケースで、パスワードは特定の名前は対応しており、認証されるには名前とパスワードの両方がマッチしなければならない。パスワードは任意のプレーンテキストでよい。パスワードを生成するための特別なツールは用意されていないので、ランダムな文字列を指定するのが望ましい。

デフォルト設定ファイルには、デーモン間で正しく認証できるように、ランダムなパスワードがあらかじめ設定されている。これらのファイルを変更する場合には、整合性に注意しなければならない。

次の図は、各デーモン設定ファイルのリソース間で、一致させる必要がある名前とパスワードの相互関係を示している。

Image Conf-Diagram

図の左側にディレクタ設定ファイル(bacula-dir.conf) があり、Director、Storage、Client リソースが設定してある。右側の列には、コンソール、ストレージデーモン(SD)、ファイルデーモン(FD) の設定ファイルがあり、どのパラメータがどのディレクタのパラメータと対応していなければならないかが、矢印で示されている。

なお、Address パラメータには注意が必要である。たとえば上図のStorage リソースのAddressディレクティブの値はfd-sd である。この値は、このままの文字列でファイルデーモンに伝えられる。そしてファイルデーモン側で名前解決を行って実際のIP アドレスを得る必要がある。しがたって、アドレスに関する設定値は、IP アドレスまたは完全修飾ドメイン名でなければならない。localhost のような名前は、完全修飾ドメイン名ではないため、ファイルデーモンは自分自身と解釈してしまう。これは一般的に望ましい挙動ではない。ファイルデーモンがストレージデーモンに接続するときのパスワードは、ジョブごとに生成される一時的なパスワードになり、.conf ファイルで指定する必要はない。

各デーモンの詳細

各デーモンで指定できるリソースとディレクティブの完全な情報は、次章以降に記載してある。

以下の設定ファイルは必ず定義しなければならない。

  •  コンソール –コンソールプログラム(ディレクタにアクセスするためのユーザインタフェース) のリソースを定義する。接続できるディレクタに関する情報を定義する。
  • ディレクタ  –ディレクタに不可欠なリソースを定義する。Bacula バックアップシステムを構成するすべてのクライアントとストレージデーモンをここに定義する。
  • クライアント – バックアップ対象になるクライアントごとに、そのリソースを定義する。このファイルは、ファイルデーモンが動作する個々のマシンごとに、そのマシン上に作
    成する必要がある。
  • ストレージ  – ストレージデーモンごとに、そのデーモンで利用できるリソースを定義する。ストレージデーモンが1 台だけ存在して、1 台または複数台のテープドライブが接続されているケースが多いと思われる。しかし複数のストレージデーモンを用意することもできる。この場合には、それぞれのストレージデーモンにそのデーモン用の設定ファイルを置く必要がある。
カテゴリー: