node01の静寂を守る:Docker Composeによるバックアップと物理メディアへの退避

node01のターミナルにて、自動生成されたデータベースのダンプファイルと静的ファイルのアーカイブを確認している画面。

技術が生まれては消えていく「諸行無常」のITにおいて、唯一の資産は積み上げた「記録」である。
Vultrが提供するスナップショット機能は強力だが、それはプラットフォームという外部要素への依存を意味する。
万が一、クラウド事業者のリージョン障害やアカウント閉鎖が起きた際、手元に「本質的なデータ」が残っていなければ、その記録は霧散する。

本稿では、node01上のDocker Compose環境におけるバックアップ戦略と、物理メディアへの退避手順について記す。


1. バックアップ対象の特定

現在のLEMPスタックにおいて、バックアップすべき対象は以下の3点に集約される。

  1. MariaDBデータ(論理ダンプ): バインドマウントされたバイナリデータ(./mariadb)を直接コピーするのは整合性のリスクがあるため、mariadb-dumpによる論理バックアップを行う。
  2. WordPressコンテンツ: アップロードした画像やテーマファイル(./wordpress)。
  3. 設定ファイル一式: 再構築の設計図である docker-compose.yml および、証明書等を含む nginx ディレクトリ全体。

これらをhost(Chromebook)を介し、最終的に外部ストレージへと物理的に退避させる。


2. バックアップスクリプトの実装

手作業によるバックアップは継続性を欠く。シェルスクリプトとcronによる自動化を実装する。

スクリプトの作成

/home/user/scripts/it-mujo-backup.sh として以下を作成。

#!/bin/bash
# IT-MUJO Backup Script

BACKUP_DIR="/home/user/backups/daily"
DATE=$(date +%Y%m%d)
FILE_DATE=$(date +%Y%m%d)
WP_STACK_DIR="/home/user/it-mujo"

echo "--- Backup Start: $DATE ---"

# ディレクトリ準備
mkdir -p $BACKUP_DIR

# 1. データベースの論理バックアップ
sudo docker exec mujo-db mariadb-dump -u root -p'your_root_password' wordpress > $BACKUP_DIR/db_backup_$DATE.sql

# 2. 設計図と静的ファイルのアーカイブ
sudo tar -czf $BACKUP_DIR/files_backup_$DATE.tar.gz -C $WP_STACK_DIR docker-compose.yml wordpress nginx


# 3. 権限の調整(生成されたバックアップファイルをuserが扱えるようにする)
sudo chown user:user $BACKUP_DIR/*.sql $BACKUP_DIR/*.tar.gz

# 4. 30日を経過した古いデータの削除 
echo "Cleaning up old backups..."
find $BACKUP_DIR -type f -mtime +30 -delete

echo "--- Backup Completed: $(date "+%Y-%m-%d %H:%M:%S") ---"

cronによる定期実行

深夜3時に実行されるよう設定。静寂の中でバックアップを完結させる。

0 3 * * * /home/user/scripts/it-mujo-backup.sh > /home/user/scripts/backup.log 2>&1
Debian 13のcrontabエディタで、毎日深夜3時にバックアップスクリプトを実行するように設定した画面。
運用を自動化し、データのポータビリティを継続的に確保するためのcron設定。

3. 物理メディアへの退避:Samsung T7

サーバー内部に保存したバックアップファイルを、定期的にhostへ引き出し、物理メディアへと書き出す。
ここで使用するのが、NVMeの速度と堅牢性を備えた Samsung T7 である。

選定理由:

  • 信頼性: NVMeベースの高速転送は、バックアップという「面倒な作業」の心理的ハードルを下げる。
  • 堅牢性: 移動先での執筆が多いエンジニアにとって、衝撃に強いアルミボディは必須だ。
  • 本質的価値: クラウドという虚空にあるデータを、確かな重みを持つ物理メディアに書き出した瞬間、記録は「自分のもの」になる。

rsync を用い、host側のマウントポイント(T7)へデータを同期する。

# node01からhostへ引き出し、そのままT7へ同期
rsync -avz node01:/home/user/backups/daily/ /mnt/chromeos/removable/T7/it-mujo-backup/
Chromebookのターミナルから、外部ストレージSamsung T7へバックアップデータを同期(rsync)している様子。
rsyncによる物理メディアへの同期。クラウドのデータを自分の手に取り戻すプロセス。

結び

Vultrのスナップショットに甘んじず、自らスクリプトを書き、信頼できる物理メディアにデータを刻む。。

流行が去り、インフラが変わっても、このデータさえあれば「IT-MUJO」はどこでも再建できる。その確信こそが、次の一歩を実直なものにする。


執筆環境: host (Chromebook / Debian 13)
公開基盤: node01 (Vultr / Debian 13 / Docker)
接続環境: NordVPN (NordLynx)

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA