rsyncさん今までありがとう。ナウいBaculaでバックアップしてみた。

## Baculaとは？
Baculaはオープンソースのバックアップソフトウェアです。
Linux、UNIX、Windows、Macなどのサーバおよびクライアントのバックアップ、リストアをすることができます。

## Bacula概要
Baculaは、３つのデーモン(プログラム)が動作することによりバックアップ、リストアを実現します。
3つのデーモンはDirectorデーモン、Storageデーモン + データベース(カタログ)、Fileデーモンの３つです。

さらにバックアップ対象となるサーバにはFileデーモンと呼ばれるエージェントをインストールする必要があります。

さらにそれらのデーモンとは別にConsoleがあります。Consoleはユーザが実際にBaculaを操作するものです。ConsoleはCUI、GUIの両方があります。
デーモンとコンソールの関係を図にすると以下のようになります。

![bacula-kiso-daemon.png](https://qiita-image-store.s3.amazonaws.com/0/101744/7b57e371-1bd6-85d8-c6ed-2b40e4d3221f.png)

分かりやすくするために各デーモンを別々に記載してありますが、１台のサーバにまとめてインストールすることももちろん可能です。
今回の例では１台に全てのデーモンをインストールしBaculaサーバを構築します。

今回試した例をシンプルに表すと以下になります。

![bacula-kiso-server.png](https://qiita-image-store.s3.amazonaws.com/0/101744/956ce7e3-9c8d-5a01-7f5d-077d64b5b4e1.png)

Baculaサーバに
　　Directorデーモン
　　Storageデーモン + データベース(カタログ)
　　Fileデーモン　←これは自分自身をバックアップするために必要
をインストール

バックアップ対象サーバに
　　Fileデーモン
をインストールします。

## インストール環境
||バージョン|
|:--|:--|
|OS|CentOS 7.2|
|バックアップ|Bacula 7.4.3|
|データベース|MariaDB 5.5|

## Baculaサーバインストール

FirewalldとSELinuxに関してはお好みで設定してください。
Baculaでは9101～9103のポートを使用します。

まずリポジトリを追加します。

```
# 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-director bacula-client bacula-storage bacula-console mariadb-server
```

インストール自体は以上で終了です。

## MariaDB設定
続いてDBの設定をします。
まず起動します。ついでに自動起動の設定をしてさらに起動したことを確認します。

```shell-session
# systemctl start mariadb
# systemctl enable mariadb
# systemctl status mariadb
```

続いて初期化します。例ではパスワード設定を「dbpass」にしています。

```shell-session
# mysql_secure_installation

<省略>

Set root password? [Y/n] Y         　←「Y」を入力
New password: dbpass　　　　　　　　　←rootのパスワードを入力
Re-enter new password: dbpass   　   ←rootのパスワードを再入力
Password updated successfully!
Reloading privilege tables..
... Success!

<省略>


Thanks for using MariaDB!
#
```

続いてデータベースを作成します。

```shell-session
# mysql -u root -p
Enter password: dbpass           ←rootのパスワードを入力
MariaDB > create database bacula;　　　←createコマンドを実行
Query OK, 1 row affected (0.00 sec)
MariaDB > grant all privileges on bacula.* to bacula@localhost identified by 'dbpass';　←MariaDBのパスワード設定
Query OK, 0 rows affected (0.01 sec)　　　　　　　　　　　
MariaDB > quit
Bye
```

さらにテーブルを作成します。

```shell-session
# /usr/libexec/bacula/make_bacula_tables mysql -u bacula -p
Making mysql tables
Enter password: dbpass 　　　↽rootのパスワードを入力
Creation of Bacula MySQL tables succeeded.
```

データベースの切り替えをします。1を入力して「Enter」を押下してください。

```shell-session
# alternatives --config libbaccats.so

3 プログラムがあり 'libbaccats.so' を提供します。

  選択       コマンド
-----------------------------------------------
   1           /usr/lib64/libbaccats-mysql.so
   2           /usr/lib64/libbaccats-sqlite3.so
*+ 3           /usr/lib64/libbaccats-postgresql.so
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します: 1
```

以上でサーバ側の設定は終了です。

## バックアップ対象側インストール

FirewalldとSELinuxに関してはお好みで設定してください。
バックアップ対象側では9102のポートを使用します。

まずリポジトリを追加します。

```shell-session
# cd /etc/yum.repos.d/
# wget https://copr.fedorainfracloud.org/coprs/slaanesh/Bacula/repo/epel-7/slaanesh-Bacula-epel-7.repo
```

次にFileデーモンのみインストールします。

```shell-session
# yum -y install bacula-client
```

バックアップ対象側のインストールは以上で終了です。

## Baculaサーバ設定
Baculaサーバの設定に関しては以下を参照しました。
https://www.bacula.jp/server-setting

またログの設定に関しては以下を参照しました。
https://www.bacula.jp/bacula-log

## バックアップ対象側設定
バックアップ対象側の設定に関しては以下を参照しました。
https://www.bacula.jp/bacula-client-setting

## Baculaサーバ起動
設定が終わったところでサーバを起動します。

```shell-session
# systemctl start bacula-dir
# systemctl start bacula-sd
# systemctl start bacula-fd
```

## バックアップ対象側
Fileデーモンだけ起動します。

```shell-session
# systemctl start bacula-fd
```

## Bacula環境完成
以上でBacula環境が構築できました。
実際にバックアップ、リストアなどを実施します。

## バックアップ取得
バックアップの取得については以下を参照しました。
https://www.bacula.jp/backup

## リストア実行
リストアに関しては以下を参照しました。
https://www.bacula.jp/restore

## バックアップのスケジュール
バックアップのスケジュール管理については以下を参照しました。
https://www.bacula.jp/archives/1100

## メール通知設定
バックアップ失敗時のメール通知設定については以下を参照しました。
https://www.bacula.jp/archives/1088

## BaculaのGUIツール
Baculaではデフォルトでbconsoleを使うようになっていますが、GUIツールもあります。
基本的に設定はできません。バックアップ、リストアなどができます。

・Baculum
![baculum.png](https://qiita-image-store.s3.amazonaws.com/0/101744/5c19de86-21d4-17a3-92a2-92a5afb58126.png)

インストール手順は以下を参照しました。
https://www.bacula.jp/baculum-install

・Bacula-web
![bacula-web-dashboard.png](https://qiita-image-store.s3.amazonaws.com/0/101744/6c118f76-175f-c7ac-deab-69e89ee476b2.png)

インストール手順は以下を参照しました。
https://www.bacula.jp/bacula-web-install

その他重複排除なども対応しているようなのですが、まだ解読しきれていないので、これから頑張りたいと思います。

## 参照
Bacula.jp
https://www.bacula.jp/