製品紹介
Bacula(バキュラ)はオープンソースの統合管理バックアップソフトです。
ネットワーク経由でデータのバックアップ・リストアを行えます。
4つの構成要素があり、全要素を単一コンピュータに持たせることもできます。
・bacula-director:ジョブの制御、データベースアクセスの制御
・bacula-client:データアクセスの処理、ファイルデータの読み込みと書き込み、暗号処理と圧縮処理、カタログデータの書き込み
・bacula-storage:バックアップ媒体の処理とバックアップデータの受信
・bacula-console:コンソール機能
バックアップデータは、ディスクへの保存のほか、外部メディア(テープなど)への書き込みもサポートされています。
BaculumというGUIのWebコンソールもオープンソースで提供されています。
公式ホームページ
日本向けコミュニティサイト
検証内容
サーバ3台にdirector、console、client、storageそれぞれの機能をインストール、
バックアップ・リストアができることを確認します。
検証環境
VMWare Workstation 12 Plyaer
仮想サーバ3台
CentOS Linux release 7.2.1511 (Core) minimal install PKG
構成

事前作業
SELinux一時無効化
# getenforce
Enforcing
# setenforce 0
# getenforce
Permissive
恒久的に無効化する場合は以下を修正して保存します。
~ SELINUX=disabled ~
firewalldの停止
# systemctl stop firewalld
# systemctl status firewalld
● firewalld.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead)
導入手順
2016/11/27現在の最新バージョン

ソースからインストールする方法とyumでインストールする方法があります。
今回は簡単に導入できるyumでインストールを行います。
bacula.jpに掲載されているインストール手順を参照して実施しました。
目次
1.Baculaサーバの構築
2.Baculaクライアントの構築
3.Baculaストレージの構築
4.Baculum(Web GUIコンソール)の導入
1.Baculaサーバの構築
wgetのインストール
# 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
最新版をインストールするため、リポジトリを手動で追加します。
BaculaとMariaDBのインストール
# yum -y install bacula-director bacula-console mariadb-server
今回はMariaDBを使用しますが、MySQL、SQLite、PostgreSQLも使用できます。
baculaとMariaDBのインストール確認
# rpm -qa | grep bacula
bacula-libs-7.4.4-1.el7.centos.x86_64 bacula-common-7.4.4-1.el7.centos.x86_64 bacula-libs-sql-7.4.4-1.el7.centos.x86_64 bacula-console-7.4.4-1.el7.centos.x86_64 bacula-director-7.4.4-1.el7.centos.x86_64
# rpm -qa | grep mariadb
mariadb-5.5.50-1.el7_2.x86_64 mariadb-server-5.5.50-1.el7_2.x86_64 mariadb-libs-5.5.50-1.el7_2.x86_64
MariaDBの起動
# systemctl start mariadb
# systemctl status mariadb
● mariadb.service - MariaDB database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled) Active: active (running) ~
# systemctl enable mariadb
MariaDBの手動起動と確認、自動起動設定を行います。
MariaDBの初期化
# mysql_secure_installation
~ Enter current password for root (enter for none): Enter押下 ~ Set root password? [Y/n] y New password: DB rootパスワード入力 Re-enter new password: DB rootパスワード再入力 ~ Remove anonymous users? [Y/n] y ~ Disallow root login remotely? [Y/n] y ~ Remove test database and access to it? [Y/n] y ~ Reload privilege tables now? [Y/n] y ~ Thanks for using MariaDB!
このメッセージが出たら正常終了です。
rootパスワード設定以降の選択肢は環境に合わせて選択してください。
DB接続
# mysql -u root -p
Enter password: DB rootパスワード入力
DB作成
MariaDB > create database bacula;
Query OK, 1 row affected (0.00 sec)
MariaDB > grant all privileges on bacula.* to bacula@localhost identified by 'p@ssw0rd'; 任意のDBパスワード入力
Query OK, 0 rows affected (0.01 sec)
MariaDB > FLUSH PRIVILEGES;
MariaDB > quit
Bye
baculaというDBを新規作成してアクセス権限とパスワードを設定しました。
テーブル作成
# /usr/libexec/bacula/make_bacula_tables mysql -u bacula -p
Making mysql tables Enter password: p@ssw0rd DBパスワード入力 Creation of Bacula MySQL tables succeeded.
DB切り替え
# 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
切り替え確認
# 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 を押して現在の選択 [+] を保持するか、選択番号を入力します: (Enter入力)
configファイル修正
baculaサーバでの変更対象は下記2つです。
/etc/bacula/bacula-dir.conf
/etc/bacula/bconsole.conf
念のため、オリジナルファイルを退避させてから編集します。
# cp -p /etc/bacula/bacula-dir.conf /etc/bacula/bacula-dir.conf.org
省略表記なしのbacula-dir.confファイルはこちらです。
Director { # Bacula-Director定義
Name = bacula-dir
DIRport = 9101 # 通信ポート指定
QueryFile = "/etc/bacula/query.sql"
WorkingDirectory = "/var/spool/bacula"
PidDirectory = "/var/run"
Maximum Concurrent Jobs = 20
Password = "BaculaPW#1" # 任意のパスワード入力
Messages = Daemon
JobDefs { # デフォルトジョブの定義
Name = "DefaultJob" 個別ジョブはこのジョブ設定に不足・重複箇所を上書きする形で作成する
Type = Backup
Level = Incremental
# Client = bacula-client # ジョブ毎に個別設定するため、コメントアウト
# FileSet = "Full Set"
# Schedule = "WeeklyCycle"
Storage = File1
Messages = Standard
Pool = File
SpoolAttributes = yes
Priority = 10
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
~
Job { # バックアップジョブ定義
Name = "FullBackup" # 任意のジョブ名を入力
Level = Full
Client= bacula-client # このクライアント定義は後述
FileSet = "Full Set" # このファイルセット内容の定義は後述
Schedule = "WeeklyCycle" # このスケジュール内容の定義は後述
Storage = File1 # このストレージ内容の定義は後述
}
~
Job { #ff0000;"># リストアジョブ定義
Name = "RestoreFiles" # 任意のリストアジョブ名を入力
Type = Restore
Client=bacula-client # 対応するバックアップジョブのクライアント名と同名を指定
FileSet="Full Set" # 対応するバックアップジョブのファイルセットと同名を指定
Storage = File1 # 対応するバックアップジョブのストレージと同名を指定
Where = /tmp/bacula-restores # リストアファイルの保管先パスを指定
}
~
FileSet { # ファイルセット定義
Name = "Full Set"
Include {
Options {
signature = MD5
}
File = /tmp/bktest # バックアップ対象パスを指定
}
Exclude { # バックアップ対象外パスを指定
File = /tmp/bktest/exclude_dir
File = /tmp/bktest/example.log
}
}
~
Client { # クライアント定義
Name = bacula-client # ジョブ定義で設定したクライアントと同名を入力
Address = 192.168.153.129 # クライアントのIP
FDPort = 9102 # 通信ポート
Catalog = MyCatalog # 使用するカタログデータの指定
Password = "BaculaPW#2" # 任意のパスワード入力
File Retention = 60 days # バックアップデータ保持期間を指定
Job Retention = 6 months # カタログデータのジョブ情報保持期間を指定
AutoPrune = yes # ファイル・ジョブ保持期間超過時の自動削除設定
}
~
Storage { # ストレージの定義
Name = File1 # ジョブ定義で設定したストレージと同名を入力
Address = 192.168.153.130 # バックアップ保管先ストレージのIPを記載
SDPort = 9103 # 通信ポート指定
Password = "BaculaPW#3" # 任意のパスワード入力
Device = FileChgr1
Media Type = File1
Maximum Concurrent Jobs = 10 # 最大同時稼動ジョブ数を指定
}
~
Catalog { # カタログ定義
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "p@ssw0rd" # DBパスワード入力
}
~
Console { # コンソール定義
Name = bacula-mon
Password = "BaculaPW#4 # 任意のパスワード入力
CommandACL = status, .status
}
変更が完了したらwqで保存してください。
続いてbconsole.confの変更です。
同様にオリジナルファイルを退避させて、設定を変更します。
# cp -p /etc/bacula/bconsole.conf /etc/bacula/bconsole.conf.org
~
Director { Name = bacula-dir DIRport = 9101 # 通信ポート指定
address = localhost
Password = "BaculaPW#1" # 任意のパスワード入力
}
変更が完了したらwqで保存してください。
サービス起動
記載内容に誤りがある場合、サービス起動に失敗します。
事前に確認する場合は以下のコマンドを実行してください。
# /usr/sbin/bacula-dir -t
サービス起動コマンド
# systemctl start bacula-dir
# systemctl status bacula-dir
● bacula-dir.service - Bacula-Director, the Backup-server Loaded: loaded (/usr/lib/systemd/system/bacula-dir.service; enabled; vendor preset: disabled) Active: active (running) ~
もし正常に起動できなかった場合、以下のような出力になります。
# service bacula-dir status
bacula-dir dead but subsys locked
bacula-dir.confの記述内容のいずれかが不正な可能性が高いため、デバッグコマンドを発行します。
# bacula-dir -c /etc/bacula/bacula-dir.conf -d100
(出力例)
bacula-dir: dird.c:208-0 Debug level = 100 # bacula-dir: address_conf.c:274-0 Initaddr 0.0.0.0:9101 bacula-dir: ERROR TERMINATION at parse_conf.c:489 Config error: Could not find config Resource TestFileSet referenced on line 74 : FileSet = "TestFileSet" : line 74, col 21 of file /etc/bacula/bacula-dir.conf FileSet = "TestFileSet" ~
上記例では、/etc/bacula/bacula-dir.confの74行目で指定されているTestFileSetが定義されていないため、
不正となっています。
bacula-dir.conf内に以下の記述が存在するか、記述内容が正しいかを確認してください。
~
FileSet {
Name = "TestFileSet"
(定義内容)
]
~
正常起動できたら、自動起動設定を行います。
# systemctl enable bacula-dir
以上でBaculaサーバの構築は完了です。
2.Baculaクライアントの構築
wgetのインストール
# 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
最新版をインストールするため、リポジトリを手動で追加します。
Baculaのインストール
# yum -y install bacula-client
Baculaのインストール確認
# rpm -qa |grep bacula
bacula-libs-7.4.4-1.el7.centos.x86_64 bacula-client-7.4.4-1.el7.centos.x86_64 bacula-common-7.4.4-1.el7.centos.x86_64
Configファイルの修正
Baculaクライアントでの変更対象は下記1つのみです。
/etc/bacula/bacula-fd.conf
# cp -p /etc/bacula/bacula-fd.conf /etc/bacula/bacula-fd.conf.org
~
Director {
Name = bacula-dir
Password = "BaculaPW#2" # 任意のパスワード入力
}
~
Director {
Name = bacula-mon
Password = "BaculaPW#5" # 任意のパスワード入力
Monitor = yes
}
~
変更が完了したらwqで保存してください。
サービス起動
# systemctl start bacula-fd
# systemctl status bacula-fd
● bacula-fd.service - Bacula-FileDaemon, a Backup-client Loaded: loaded (/usr/lib/systemd/system/bacula-fd.service; enabled; vendor preset: disabled) Active: active (running) ~
# systemctl enable bacula-fd
サービス手動起動と確認、自動起動設定を行います。
以上でBaculaクライアントの構築は完了です。
※Baculaサーバにも同様にbacula-fdをインストールし、設定してください。
Catalogデータの書き込みに必要です。
3.Baculaストレージの構築
wgetのインストール
# 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
最新版をインストールするため、リポジトリを手動で追加します。
Baculaのインストール
# yum -y install bacula-storage
Baculaのインストール確認
# rpm -qa |grep bacula
bacula-libs-7.4.4-1.el7.centos.x86_64 bacula-common-7.4.4-1.el7.centos.x86_64 bacula-libs-sql-7.4.4-1.el7.centos.x86_64 bacula-storage-7.4.4-1.el7.centos.x86_64
Configファイルの修正
Baculaクライアントでの変更対象は下記1つのみです。
/etc/bacula/bacula-sd.conf
# cp -p /etc/bacula/bacula-sd.conf /etc/bacula/bacula-sd.conf.org
~
Director {
Name = bacula-dir
Password = "BaculaPW#3" # 任意のパスワード入力
}
#
# Restricted Director, used by tray-monitor to get the
# status of the storage daemon
#
Director {
Name = bacula-mon
Password = "BaculaPW#6" # 任意のパスワード入力
Monitor = yes
}
~
変更が完了したらwqで保存してください。
サービス起動
# systemctl start bacula-sd
# systemctl status bacula-sd
● bacula-sd.service - Bacula-FileDaemon, a Backup-client Loaded: loaded (/usr/lib/systemd/system/bacula-fd.service; enabled; vendor preset: disabled) Active: active (running) ~
# systemctl enable bacula-sd
サービス手動起動と確認、自動起動設定を行います。
以上でBaculaストレージの構築は完了です。
Baculum(GUI)環境構築ページへ