お金をかけずにサーバーの勉強をしよう

Baculaで Ubuntu Serverのバックアップ(その1)

2023年5月13日

メニューへ戻る

Ubuntuのフリーで使えるバックアップソフトの Baculaを入れてみます。

Ubuntu Serverのバックアップをするツールを探していて、Ubuntuの公式で Baculaというソフトを見つけました。

こちらが公式ページです。
Bacula.org

まだ導入の練習をしているところで、私もハッキリと捉え切れていない状態で書いていますので、曖昧な所がありますがご容赦下さい。
(後日書き直すでしょう)

有償の Enterprise版と 無償の Community版があり、前者は MySQLといったデータベースのバックアップもできるプラグインがあったりサポートがあったりするのに対して、Community版はファイルのバックアップまでのようです。

私はこのソフトの名前を聞いたことがありませんでしたが、管理用の WebGUIも持っている統合的なバックアップソフトで、複数のバックアップ対象マシンを一元的に管理できるようです。

商用ソフトの ArcServe・BackupExec等と似たようなソフトなんでしょう

Commnunity版のマニュアルはこちら。(PDFです)
Bacula Community Installation Guide

こちらの「5 Ubuntu – Installation with apt」の段落に沿って進めていきます。


Baculaのインストール前に準備することがあります。

Baculaはバックアップ情報の管理にデータベースを使いますが、PostgreSQLがデフォルトで MySQLも使えます。

ここではPostgreSQLで作ります。

後ほど出てきますが、使うデータベースによって導入する Baculaのパッケージが変わりますのでご注意下さい。

2023年5月13日時点のなるべく最新版で、結果的に以下の通りの環境になりました。

それでは、早速インストール開始。


Ubuntu Server 22.04のインストールについては以下に書いています。
Ubuntu Linux Serverをインストール
Ubuntu Serverの初期設定

PostgreSQLのインストールについては「PostgreSQLインストール」に書いています。

PostgreSQLに[postgres]ユーザー(パスワードは[postgres])でログインできる状態からスタートです。


Baculaのパッケージをダウンロードするのに必要な [apt-transport-https]をインストールします。

subro@UbuntuServer2204-2:~$ sudo apt-get install -y apt-transport-https
〜〜〜 省略 〜〜〜

インストールできました。

Baculaの aptリポジトリの GPGキー(出所を証明する)を取得します。

subro@UbuntuServer2204-2:~$ cd /tmp

subro@UbuntuServer2204-2:/tmp$ wget https://www.bacula.org/downloads/Bacula-4096-Distribution-Verification-key.asc
--2023-05-12 12:40:17--  https://www.bacula.org/downloads/Bacula-4096-Distribution-Verification-key.asc
www.bacula.org (www.bacula.org) をDNSに問いあわせています... 94.103.98.87
www.bacula.org (www.bacula.org)|94.103.98.87|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 3148 (3.1K) [text/plain]
‘Bacula-4096-Distribution-Verification-key.asc’ に保存中

Bacula-4096-Distribution-Verification-key.asc    100%[==========================================================================================================>]   3.07K  --.-KB/s    in 0s

2023-05-12 12:40:18 (29.9 MB/s) - ‘Bacula-4096-Distribution-Verification-key.asc’ へ保存完了 [3148/3148]

subro@UbuntuServer2204-2:/tmp$ sudo apt-key add Bacula-4096-Distribution-Verification-key.asc
Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
OK

subro@UbuntuServer2204-2:/tmp$ rm Bacula-4096-Distribution-Verification-key.asc

ダウンロードして登録もできました。

Baculaの aptリポジトリを aptの検索対象に加えます。
以下のファイルを作ります。
[/etc/apt/sources.list.d/Bacula-Community.list]

# Bacula Community
deb [arch=amd64] https://www.bacula.org/packages/5f1e8eefd1016/debs/13.0.2 jammy main
※本来[5f1e8eefd1016]の部分はユーザー登録(無料)をするとメールで教えてくれるようなんですが、Googleで「Bacula Ubuntu Binary」で検索するとダウンロードサーバーが出てくるんですよね…。

リポジトリデータベースのアップデートをします。

subro@UbuntuServer2204-2:~$ sudo apt update
ヒット:1 http://jp.archive.ubuntu.com/ubuntu jammy InRelease
ヒット:2 http://jp.archive.ubuntu.com/ubuntu jammy-updates InRelease
ヒット:3 http://jp.archive.ubuntu.com/ubuntu jammy-backports InRelease
ヒット:4 http://apt.postgresql.org/pub/repos/apt jammy-pgdg InRelease
ヒット:5 http://jp.archive.ubuntu.com/ubuntu jammy-security InRelease
無視:6 https://www.bacula.org/packages/5f1e8eefd1016/debs/13.0.2 jammy InRelease
取得:7 https://www.bacula.org/packages/5f1e8eefd1016/debs/13.0.2 jammy Release [1,625 B]
取得:8 https://www.bacula.org/packages/5f1e8eefd1016/debs/13.0.2 jammy Release.gpg [858 B]
取得:9 https://www.bacula.org/packages/5f1e8eefd1016/debs/13.0.2 jammy/main amd64 Packages [4,560 B]
7,043 B を 3秒 で取得しました (2,613 B/s)
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています... 完了
状態情報を読み取っています... 完了
アップグレードできるパッケージが 4 個あります。表示するには 'apt list --upgradable' を実行してください。
W: https://www.bacula.org/packages/5f1e8eefd1016/debs/13.0.2/dists/jammy/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.

アップデートできました。
GPGキーの形式が古いって怒られています。

Baculaをインストールします。

subro@UbuntuServer2204-2:~$ sudo apt-get install bacula-postgresql
〜〜〜 省略 〜〜〜

途中で以下のように PostgreSQLのデータベース作成画面になるので、入力していきます。
[はい]を押します。
Baculaインストール中の PostgreSQL設定画面 1

[localhost]を選択し、[了解]を押します。
Baculaインストール中の PostgreSQL設定画面 2

PostgreSQLに Bacula用のデータベースアカウントが作られますので、そのパスワードを設定します。
[了解]を押します。
Baculaインストール中の PostgreSQL設定画面 3

確認のためにもう一度パスワードを入力し、[了解]を押します。
Baculaインストール中の PostgreSQL設定画面 4

これでパッケージのインストールが進んで、データベースができあがります。


この後「8 Security and Permissions Considerations」に行ってインストールの続きをするように書いてありますが、ここでは ufw(ファイアウォールを)を有効にしていないのでスキップします。


「9 Infrastructure Test」の段落に移ります。

動作試験をします。
(長いですが全部のせます)

subro@UbuntuServer2204-2:~$ sudo -u bacula /opt/bacula/bin/bconsole
Connecting to Director UbuntuServer2204-2:9101
1000 OK: 10002 UbuntuServer2204-2-dir Version: 13.0.2 (18 February 2023)
Enter a period to cancel a command.

*run job=BackupCatalog
Using Catalog "MyCatalog"
Run Backup job
JobName:  BackupCatalog
Level:    Full
Client:   UbuntuServer2204-2-fd
FileSet:  Catalog
Pool:     File (From Job resource)
Storage:  File1 (From Job resource)
When:     2023-05-12 17:27:30
Priority: 11
OK to run? (yes/mod/no): yes
Job queued. JobId=2
You have messages.

*messages
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: shell command: run BeforeJob "/opt/bacula/scripts/make_catalog_backup.pl MyCatalog"
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Start Backup JobId 1, Job=BackupCatalog.2023-05-12_17.26.56_03
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Connected to Storage "File1" at UbuntuServer2204-2:9103 with TLS
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Created new Volume="Vol-0001", Pool="File", MediaType="File1" in catalog.
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Using Device "FileChgr1-Dev1" to write.
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Connected to Client "UbuntuServer2204-2-fd" at UbuntuServer2204-2:9102 with TLS
12- 5月 17:26 UbuntuServer2204-2-fd JobId 1: Connected to Storage at UbuntuServer2204-2:9103 with TLS
12- 5月 17:26 UbuntuServer2204-2-sd JobId 1: Labeled new Volume "Vol-0001" on File device "FileChgr1-Dev1" (/opt/bacula/archive).
12- 5月 17:26 UbuntuServer2204-2-sd JobId 1: Wrote label to prelabeled Volume "Vol-0001" on File device "FileChgr1-Dev1" (/opt/bacula/archive)
12- 5月 17:26 UbuntuServer2204-2-sd JobId 1: Elapsed time=00:00:01, Transfer rate=54.63 K Bytes/second
12- 5月 17:26 UbuntuServer2204-2-sd JobId 1: Sending spooled attrs to the Director. Despooling 224 bytes ...
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Bacula Enterprise UbuntuServer2204-2-dir 13.0.2 (18Feb23):
  Build OS:               x86_64-pc-linux-gnu-bacula-enterprise ubuntu 22.04
  JobId:                  1
  Job:                    BackupCatalog.2023-05-12_17.26.56_03
  Backup Level:           Full
  Client:                 "UbuntuServer2204-2-fd" 13.0.2 (18Feb23) x86_64-pc-linux-gnu-bacula-enterprise,ubuntu,22.04
  FileSet:                "Catalog" 2023-05-12 17:26:56
  Pool:                   "File" (From Job resource)
  Catalog:                "MyCatalog" (From Client resource)
  Storage:                "File1" (From Job resource)
  Scheduled time:         12- 5月-2023 17:26:26
  Start time:             12- 5月-2023 17:26:59
  End time:               12- 5月-2023 17:26:59
  Elapsed time:           1 sec
  Priority:               11
  FD Files Written:       1
  SD Files Written:       1
  FD Bytes Written:       54,522 (54.52 KB)
  SD Bytes Written:       54,638 (54.63 KB)
  Rate:                   54.5 KB/s
  Software Compression:   None
  Comm Line Compression:  75.8% 4.1:1
  Snapshot/VSS:           no
  Encryption:             no
  Accurate:               no
  Volume name(s):         Vol-0001
  Volume Session Id:      1
  Volume Session Time:    1683879377
  Last Volume Bytes:      55,337 (55.33 KB)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Begin pruning Jobs older than 6 months .
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: No Jobs found to prune.
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: Begin pruning Files.
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: No Files found to prune.
12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: End auto prune.

12- 5月 17:26 UbuntuServer2204-2-dir JobId 1: shell command: run AfterJob "/opt/bacula/scripts/delete_catalog_backup"
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: shell command: run BeforeJob "/opt/bacula/scripts/make_catalog_backup.pl MyCatalog"
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: Start Backup JobId 2, Job=BackupCatalog.2023-05-12_17.27.36_05
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: Connected to Storage "File1" at UbuntuServer2204-2:9103 with TLS
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: Using Device "FileChgr1-Dev2" to write.
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: Connected to Client "UbuntuServer2204-2-fd" at UbuntuServer2204-2:9102 with TLS
12- 5月 17:27 UbuntuServer2204-2-fd JobId 2: Connected to Storage at UbuntuServer2204-2:9103 with TLS
12- 5月 17:27 UbuntuServer2204-2-sd JobId 2: Volume "Vol-0001" previously written, moving to end of data.
12- 5月 17:27 UbuntuServer2204-2-sd JobId 2: Ready to append to end of Volume "Vol-0001" size=55,337
12- 5月 17:27 UbuntuServer2204-2-sd JobId 2: Elapsed time=00:00:01, Transfer rate=58.75 K Bytes/second
12- 5月 17:27 UbuntuServer2204-2-sd JobId 2: Sending spooled attrs to the Director. Despooling 224 bytes ...
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: Bacula Enterprise UbuntuServer2204-2-dir 13.0.2 (18Feb23):
  Build OS:               x86_64-pc-linux-gnu-bacula-enterprise ubuntu 22.04
  JobId:                  2
  Job:                    BackupCatalog.2023-05-12_17.27.36_05
  Backup Level:           Full
  Client:                 "UbuntuServer2204-2-fd" 13.0.2 (18Feb23) x86_64-pc-linux-gnu-bacula-enterprise,ubuntu,22.04
  FileSet:                "Catalog" 2023-05-12 17:26:56
  Pool:                   "File" (From Job resource)
  Catalog:                "MyCatalog" (From Client resource)
  Storage:                "File1" (From Job resource)
  Scheduled time:         12- 5月-2023 17:27:30
  Start time:             12- 5月-2023 17:27:38
  End time:               12- 5月-2023 17:27:39
  Elapsed time:           1 sec
  Priority:               11
  FD Files Written:       1
  SD Files Written:       1
  FD Bytes Written:       58,636 (58.63 KB)
  SD Bytes Written:       58,752 (58.75 KB)
  Rate:                   58.6 KB/s
  Software Compression:   None
  Comm Line Compression:  74.7% 4.0:1
  Snapshot/VSS:           no
  Encryption:             no
  Accurate:               no
  Volume name(s):         Vol-0001
  Volume Session Id:      2
  Volume Session Time:    1683879377
  Last Volume Bytes:      114,547 (114.5 KB)
  Non-fatal FD errors:    0
  SD Errors:              0
  FD termination status:  OK
  SD termination status:  OK
  Termination:            Backup OK

12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: Begin pruning Jobs older than 6 months .
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: No Jobs found to prune.
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: Begin pruning Files.
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: No Files found to prune.
12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: End auto prune.

12- 5月 17:27 UbuntuServer2204-2-dir JobId 2: shell command: run AfterJob "/opt/bacula/scripts/delete_catalog_backup"

*status dir
UbuntuServer2204-2-dir Version: 13.0.2 (18 February 2023) x86_64-pc-linux-gnu-bacula-enterprise ubuntu 22.04
Daemon started 12- 5月 -2023 17:16, conf reloaded 12- 5月-2023 17:16:17
 Jobs: run=2, running=0 mode=0,0
 Crypto: fips=N/A crypto=OpenSSL 3.0.2 15 Mar 2022
 Heap: heap=946,176 smbytes=382,131 max_bytes=474,377 bufs=443 max_bufs=486
 Res: njobs=3 nclients=1 nstores=2 npools=3 ncats=1 nfsets=2 nscheds=2

Scheduled Jobs:
Level          Type     Pri  Scheduled          Job Name           Volume
===================================================================================
Incremental    Backup    10  12- 5月 -2023 23:05  BackupClient1      Vol-0001
Full           Backup    11  12- 5月 -2023 23:10  BackupCatalog      Vol-0001
====

Running Jobs:
Console connected using TLS at 12- 5月 -2023 17:27
No Jobs running.
====

Terminated Jobs:
 JobId  Level     Files      Bytes   Status   Finished        Name
====================================================================
     1  Full           1    54.52 K  OK       12- 5月 -2023 17:26 BackupCatalog
     2  Full           1    58.63 K  OK       12- 5月 -2023 17:27 BackupCatalog

====

*quit

よく分かりませんが、Baculaとして動作している気がします。
[/opt/bacula/bin/bconsole]コマンドは Baculaのコマンドを実行する CUIを提供するプログラムなのでしょう。


何か尻切れなんですが、Baculaのサーバーとしてはこれでインストールはできているようです。

Baculaで Ubuntu Serverのバックアップ(その2)」に続きます。