2026年5月17日

2026年5月17日

Baculaバックアップサーバー構築

はじめに

Bacula(バキュラ)は1台のDirectorサーバーから複数クライアントのバックアップを集中管理できるOSSのエンタープライズバックアップソリューションです。Full/Differential/Incremental の組み合わせ、保管期間ポリシー、テープ・ディスク両対応、暗号化転送など、商用製品に引けを取らない機能を備えています。

構成は Director(計画と統制)、Storage Daemon(媒体への書き込み)、File Daemon(クライアント)、Catalog(MySQLやPostgreSQLのメタDB)の4要素から成ります。それぞれが独立して動くため柔軟にスケールでき、数十台規模までは1台のDirectorで十分運用可能です。

本記事ではUbuntu 22.04を例に、Bacula 13系のサーバー側3コンポーネントを同居構成で構築し、最初のジョブを実行するまでの手順を解説します。

症状・背景

  • 複数サーバーのバックアップを個別cronで管理しており、運用負荷が高い
  • どのバックアップが成功・失敗したか集中監視できていない
  • 世代管理(Full/差分/増分)を自前スクリプトで再実装したくない
  • 暗号化やリストア手順含めて統一基盤を持ちたい

手順・設定方法

ステップ1: Baculaパッケージのインストール

DirectorとStorageDaemonをまとめてインストールします。

# パッケージリスト更新
sudo apt update
# Director, Storage, File Daemon, Console, MySQLバックエンドを導入
sudo apt install -y bacula-director-mysql bacula-sd-mysql bacula-fd \
  bacula-console bacula-common-mysql
# インストール時にMySQLのDB作成プロンプトに従う
# 各サービスの状態確認
sudo systemctl status bacula-director bacula-sd bacula-fd

ステップ2: Catalogデータベースの初期化

MySQLにスキーマを作成します。

# 専用ユーザーとDBを作成
sudo /usr/share/bacula-director/create_mysql_database -u root
# テーブル作成
sudo /usr/share/bacula-director/make_mysql_tables -u root
# パスワードを設定
sudo /usr/share/bacula-director/grant_mysql_privileges -u root
# DB接続確認
mysql -u bacula -p bacula -e "SHOW TABLES;"

ステップ3: Director設定ファイルを編集

ジョブ・クライアント・スケジュールを定義します。

# メイン設定を編集
sudo nano /etc/bacula/bacula-dir.conf
# 重要セクション例:
# Job { Name="Backup-srv1"; Type=Backup; Client=srv1-fd; FileSet="Full Set";
#       Schedule="WeeklyCycle"; Storage=File1; Pool=Default; Messages=Standard; }
# Client { Name=srv1-fd; Address=10.0.0.21; FDPort=9102; Password="..."; }
# Schedule { Name="WeeklyCycle"; Run=Full sun at 23:05; Run=Incremental mon-sat at 23:05; }
# 構文チェック
sudo bacula-dir -t -c /etc/bacula/bacula-dir.conf

ステップ4: Storage設定とジョブ実行

バックアップ保存先と最初のジョブを動かします。

# Storage Daemon設定でディスク保存先を定義
sudo nano /etc/bacula/bacula-sd.conf
# Device { Name=FileStorage; Media Type=File; Archive Device=/backup/bacula;
#          LabelMedia=yes; Random Access=yes; AutomaticMount=yes; }
# 保存ディレクトリを作成
sudo mkdir -p /backup/bacula && sudo chown bacula:bacula /backup/bacula
# 全サービスを再起動
sudo systemctl restart bacula-director bacula-sd bacula-fd
# Bacula Consoleからジョブ実行
echo -e "run job=Backup-srv1 yes\nstatus director\nquit" | sudo bconsole

注意事項

  • DirectorとClientの間ではパスワード認証を行うためbacula-fd.confbacula-dir.confの値を厳密に一致させる
  • ポート9101(Dir)/9102(FD)/9103(SD)をファイアウォールで開放
  • Catalog自体もバックアップ対象に含めないと災害時に世代情報を失う
  • 大容量データではNetwork StagingとしてMaximum Concurrent Jobsを調整しI/O集中を防ぐ

まとめ

1. Director/SD/FD の3コンポーネントを理解する

2. Catalog(MySQL/PG) のスキーマ作成が初期化の要

3. Job + Client + Schedule の3点セットで運用ポリシー定義

4. bconsole で手動実行・状態確認・リストアを操作

5. Catalogもバックアップ対象に含める ことで災害復旧可能性を担保

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ