毎日のバックアップは以下の通り行っている。
| ファイル | 内容 | 生成元 |
|---|---|---|
| docker_backup_*.tar.gz | /mnt/data/docker 全体(immichを除く)。EPGStation/Mirakurun/Vaultwarden/PassManager/AdGuard/whisper等、各サービスのdocker-compose.ymlとデータを含む | daily_backup.sh |
| home_backup_*.tar.gz | /home/vafee(キャッシュ・ビルド成果物系を除く) | daily_backup.sh |
| apache_backup_*.tar.gz | Apacheのsites-available/sites-enabled、vafee-serverのconf | daily_backup.sh |
| systemd_backup_*.tar.gz | hls-*.service、pcscd関連、cloudflared.serviceなど個別unitファイル | daily_backup.sh |
| hostconf_backup_*.tar.gz | /etc/msmtprc、/etc/fstab、/etc/apt/preferences.d | daily_backup.sh |
| vaultwarden_backup_*.tar.gz | Vaultwardenのvw-data(docker_backupにも含まれる、単体復旧用の予備) | daily_backup.sh |
| passmanager_backup_*.tar.gz | PassManagerのDB・鍵情報(同上、予備) | daily_backup.sh |
| cert_backup_*.tar.gz.gpg | Let's Encryptワイルドカード証明書、ts.net証明書、Cloudflare APIトークン(GPG暗号化) | daily_backup.sh |
| crontab_user/root_*.txt | vafee・rootそれぞれのcrontab内容 | daily_backup.sh |
| D:\Ubuntu-sv BackUP\scripts\ | /mnt/data/backup/scripts/ 配下のスクリプト一式(daily_backup.sh、encode_host.sh、tv_bak_move.py等) | amatsukaze_send_5.ps1 |
| D:\JPEG\immich\ | Immichライブラリ(写真本体) | amatsukaze_send_5.ps1 |
■Ubuntu Server インストール 環境整備
■ TV録画ワークディレクトリの作成
外付けSSDにワークディレクトリーを作成していたが、IO負荷を下げるために、内蔵SSDに作成することとした。
mkdir -p /home/vafee/work_jls
■ Python3 インストール
ホストにPython3 をインストール
sudo apt update && sudo apt upgrade sudo apt install python3.9
■Apache 2 インストール
ホストにApache 2 をインストール
sudo apt install apache2 -y sudo systemctl enable apache2 sudo systemctl start apache2 sudo a2enmod cgi
以前Windowsでのcgiファイルは shift-JIS を使用していたが、Ubuntu Server は、UTF-8に変換するので nkf(Network Kanji Filter)をインストール
sudo apt update && sudo apt install nkf -y
■ホスト設定設定の復元
外付けSSDは使用に問題なくそのまま使用する場合 YYYYMMDD は、最新日付に置き換える
cd /mnt/data/backup sudo tar -xzf hostconf_backup_YYYYMMDD.tar.gz -C / sudo mount -a # fstabの内容を反映
手動追記したfstabの外付けSSD行と、ここで復元されるバックアップ内のfstabが重複・矛盾しないか確認すること。外付けSSDは同一ディスクなのでUUIDは変わっていないはずだが、念のため cat /etc/fstab で内容を確認してから mount -a するとよい
■Dockerサービスの復元
mnt/data/docker 配下のデータ自体は外付けSSD上にそのまま残っている(=docker_backup_*.tar.gzを展開し直すと、むしろ古いバックアップ時点の状態で上書きしてしまう恐れがある)。必要なのはDockerエンジン自体の再インストールと、コンテナの作り直しだけ。
cd /mnt/data/backup # Dockerエンジンを新規インストール(内蔵SSD側のソフトウェアなので必須) sudo apt update sudo apt install -y docker.io docker-compose-plugin sudo systemctl enable --now docker # 各サービスディレクトリで、既存の docker-compose.yml とデータをそのまま使ってコンテナを作成 cd /mnt/data/docker/epgstation && sudo docker compose up -d cd /mnt/data/docker/vaultwarden && sudo docker compose up -d cd /mnt/data/docker/passmanager && sudo docker compose up -d cd /mnt/data/docker/adguard && sudo docker compose up -d cd /mnt/data/docker/vafee-server && sudo docker compose up -d # ...他の稼働中サービスも同様に、/mnt/data/docker/ 配下の各ディレクトリで実行 # 再起動時の自動起動は各docker-compose.ymlのrestart設定(restart: always / unless-stopped)で # 既に賄われているため、up -dを一度実行すれば以降は再起動のたびに自動で立ち上がる。 # 念のため現在起動中の全コンテナに再適用して確認したい場合: docker update --restart unless-stopped $(docker ps -q)
■その他の復元
cd /mnt/data/backup
#Apache
sudo tar -xzf apache_backup_YYYYMMDD.tar.gz -C /
sudo a2ensite internal-vafee-lab.conf # 有効化状態を確認
sudo systemctl reload apache2
#systemdサービス
sudo tar -xzf systemd_backup_YYYYMMDD.tar.gz -C /
sudo systemctl daemon-reload
sudo systemctl enable --now cloudflared encode-watcher # 必要なものを有効化
#ホームディレクトリ
tar -xzf home_backup_YYYYMMDD.tar.gz -C /
#crontab
crontab crontab_user_YYYYMMDD.txt
sudo crontab crontab_root_YYYYMMDD.txt
# 反映確認(それぞれ内容が表示されればOK)
crontab -l
sudo crontab -l
#cert_backup(GPG暗号化、要復号)
# Bitwardenから「ubuntu-sv cert_backup 復号用パスフレーズ」を取得し、まず新規作成
sudo mkdir -p /root/.secrets
sudo bash -c 'echo "(Bitwardenから取得したパスフレーズ)" > /root/.secrets/backup_passphrase'
sudo chmod 600 /root/.secrets/backup_passphrase
gpg --batch --yes --passphrase-file /root/.secrets/backup_passphrase \
-d cert_backup_YYYYMMDD.tar.gz.gpg > cert_backup_YYYYMMDD.tar.gz
sudo tar -xzf cert_backup_YYYYMMDD.tar.gz -C /
■スクリプトの復元
外付けSSDが健全なので、/mnt/data/backup/scripts/ 自体は最初から存在している。Windows機から取得し直す必要はない(7章参照)。念のため実行権限だけ確認しておく
cd /mnt/data/backup/scripts chmod +x /mnt/data/backup/scripts/*.sh