Bacula (7.0.5) に関する様々なメモのまとめ


Baculaの導入を試した上で得たTIPS・設定・操作などをまとめたものです。雑多なものが集まっているので、まず右の目次を参照して下さい。

## 環境・バージョン

* Ubuntu 16.04 LTS (Xenial)
* Bacula 7.0.5

## インストールにあたって

* SQLiteを使えばデータベースサーバなしでインストールできるが、現在推奨されていません。MySQLやPostgreSQLを使用したほうがいいです。


## トラブルシューティング（起動）

### Baculaプログラム(bacula-*, bconsole)をデバッグモードで起動する

Baculaのどのプログラムも、次のコマンドで起動すると、バックグラウンド化せず、またデバッグメッセージを出すようにできます。

```bash
bacula-dir -f -d 99
```

bacula-fd, bacula-sd も同様です。bconsoleの場合は -f を外します。

### Directorは起動しているのにbconsoleが固まる（ポート9101でListenしていない）

* bacula-directorは起動したのに bconsole で接続しようとしても固まる。
* bconsole.conf 等の接続設定は正しい。
* `bconsole -d 99` で起動したデバッグメッセージを見ると、connection refusedと表示されている

上の状況の場合、データベースへの接続エラーの可能性があります。bacula-dir はデータベースへの接続・認証が失敗すると、なぜか 起動したにも関わらずポートをListenしないようです。

/var/lib/bacula/bacula.log でエラーメッセージを確認します。

注）ただしエラーメッセージが出てくるのは起動して、しばらく経ってからのようです。

### MySQLへの接続が、接続設定が正しいのに失敗する

/etc/mysql/mysql.d/my.cnf の定義の影響を受ける場合があります。一旦このファイルを空にして、起動してみます。

## トラブルシューティング（バックアップ実行）

### ジョブが実行されず Device is BLOCKED waiting for mount of volume と表示される（ファイルへのバックアップで）

バックアップ先ディレクトリが所有者(baculaユーザである必要あり)と書き込み可能かどうかを確認します。


## 設定

### File Retention / Job Retention の意味

JobまたはPoolリソースに File Retention / Job Retention パラメータがあります。

* Baculaはカタログ内に、JobとFileの２つの情報を保持します。
	* １回分のバックアップデータの情報、またそれがどこに（どのVolumeに）存在するかを保持しているのがJobです。
	* その中身のファイル情報を保持しているのがFileです。
* File Retention （デフォルトは 60 days ）に指定された期間が過ぎると、カタログからFileが消去されます。すると、Jobから一部のファイルだけを取り出してリストアすることができなくなりますが、全部をリストアすることは可能です。
* Job Retention （デフォルトは 180 days ）に指定された期間が過ぎ、 AutoPrune = yes 設定の場合、カタログからJobが消去されます。そうなると、基本的にリストアはできなくなります。
	* ただし、例えJobが消去されても、 bscan ツールを使えば、カタログ上にJobの情報を復活させリストアをすることができます。
	* もし Purge ※ やボリュームのリサイクル（ Recycle = yes 設定）が行われると、Volumeのデータも消去されてしまいます。
	* ※Purgeは削除されたJobに対応するVolumeのデータを消去する操作。テープでは無意味だが、ファイルバックアップの場合は Action On Purge = Truncate 設定がされていれば、消去されてしまう。
* Pool の Volume Retention 設定は、 Job Retention の設定よりも [優先されます](http://www.bacula.org/9.0.x-manuals/en/main/Automatic_Volume_Recycling.html#SECTION002520000000000000000)。 Volume Retention に設定された日数が過ぎると、 Job Retention に到達する前にJobは削除されてしまいます。

参照・参考： [Automatic Volume Recycling](http://www.bacula.org/9.0.x-manuals/en/main/Automatic_Volume_Recycling.html) 

### MacのTime Machineのように新しいものほど短く残すには（日次増分・週次差分・月次フルといった組み合わせで）

[Automated Disk Backup](http://www.bacula.org/9.0.x-manuals/en/main/Automated_Disk_Backup.html) を読むと、まさにそのような設定を、３つのPoolを使って構築する例が出ています。

下図のように Pool の Volume Retantion , Maximum Volume Jobs , 
Maximum Volumes , AutoPrune, Recycle 設定を使って、ボリュームをリサイクルしています。

![img 2017-12-03 22.52.44.png](https://qiita-image-store.s3.amazonaws.com/0/97143/9cb960b2-5280-e1cd-3083-c2e03bc0b904.png "img 2017-12-03 22.52.44.png")


### バックアップ対象ホスト(bacula-fdを動かすホスト)で、 / 以外をルートにしてバックアップする

FileSet の strippaths=N を使用します。

[Configuring the Director](http://www.bacula.org/7.4.x-manuals/en/main/Configuring_Director.html)

> This option will cause integer paths to be stripped from the front of the full path/filename being backed up. This can be useful if you are migrating data from another vendor or if you have taken a snapshot into some subdirectory.

### Mac(HFS+)のリソースフォークをバックアップするには

FileSetのOptionsに次を指定すると"よいようです"。（hfsplussupport だけで良いかもしれないが、不明。最近のMacOSXではリソースフォークは拡張属性として保存されているので、 xattrsupport が必要かもしれません。 ）

```
xattrsupport = yes
hfsplussupport = yes
```

ただし  Bacula 7.0.4 (bacula-fdも同バージョン) + MacOSX 10.9 では、上のオプションを試して実験した所、正しく保存されませんでした。（バックアップの段階で保存されない） 新しいバージョンでは大丈夫かどうかは、未確認です。

実験をするには、適当な0KBのファイルに、[Finderの「情報」でアイコンを貼り付け](https://support.apple.com/ja-jp/HT201737)てください。（データは0KBなのに、ファイルサイズが 2-3MBになります） Developer Tool の SplitFork ツールを使うと、リソースフォークが付いたことが分かります。
このファイルをバックアップして、Jobのサイズ(status dirコマンドで確認)が同様になっているか確認します。


## 管理

### GUI ツール (bat, bacula-console-qt)をサーバにインストールし、Macで画面を表示して使用する

サーバ側では、 bacula-console-qt パッケージをインストールしておきます。
Macで [XQuartz](https://support.apple.com/ja-jp/HT201341) を起動し、XQuartzのターミナルから次を実行してX11転送付きでサーバのbatを起動します。

```bash
ssh -X USER@SERVER bat
```

これでMac側に画面が表示されます。

## ベアメタルバックアップ（ディザスタリカバリ、ベアメタル回復とも）について

[Disaster Recovery Using Bacula](http://www.bacula.org/9.0.x-manuals/en/main/Disaster_Recovery_Using_Bac.html) に示されていますが、

* かつてBaculaのRescue CDが提供されていたが、ハードウェアやディスク構成の多様化に対応できず、今は勧めてません。
* よって各ディストーションのLiveCDから起動し、一定の手順を踏んでリカバリを行うことを勧めているようです。
* ただ、どうも特に専用の便利なツールが提供されているわけではないようです。

### ディザスタリカバリに必要なもの

> Bare Metal Recovery assumes that you have the following items for your system:
> 
> * A recent Bacula backup (Full plus Incrementals)
> * A Rescue CDROM.
> * Your Bacula Director, Catalog, and Storage daemon running on another machine on your local network.
> * a copy of your hard disk information (パーティション構成など)
> * a statically linked version of the Bacula File daemon.

最後の "a statically linked version of the Bacula File daemon" は配布されておらず、自分でソースからビルドしてということらしいです。

### ディザスタリカバリのざっくりの手順

1. 各種 Linux の Rescue CD で起動する
2. 真っさらなハードディスクに自分でパーティションを切る
3. 真っさらなハードディスクが /mnt/disk にあるとして、「/mnt/disk に chrootして」 静的リンク版の bacula-fd を起動する。（でないとシンボリックリンクが正しく復旧されないそう）