【NAS換装・ドメイン移行対応】停止したRestic自動バックアップを復旧し、新環境へ安全に切り替える手順

この記事は約8分で読めます。
この記事が役立ったらブックマーク! あとで読み返したり、環境構築時のリファレンスに活用できます
B! はてなブックマークに追加

NASのHDD換装や障害復旧後、「気づいたら毎日の自動バックアップが止まっていた」というトラブルは少なくありません。さらに、サイトのドメイン変更やリニューアルが重なると、どこから手をつけて復旧・切り替えを行えばよいか混乱しがちです。

今回は、「NAS換装でマウントと保管庫が吹き飛んだResticバックアップ環境」を最短で復旧させ、さらに新ドメイン環境のバックアップへ完全移行するまでの実践手順をまとめました。

発生していた問題

  1. NASマウントの切断: NAS(TeraStation)のHDD換装に伴い共有設定がリセットされ、サーバー側のマウント(cifs)がエラーで停止していた。
  2. Restic保管庫の消失とパスワード不一致: NAS上の保管庫構造が消えたため初期化が必要になったが、手動入力したパスワードとスクリプト側の認証情報が一致せず Fatal: wrong password or no key found が発生。
  3. 対象パスが旧ドメインのまま: バックアップ対象が旧サイト構成のままになっており、新環境のファイルやDBが保護されていなかった。

1. NASの共有フォルダ復旧と自動マウント再設定

まずはサーバーからNASのバックアップ領域が見える状態に戻します。

共有名の確認とNAS側設定

mount -a で mount error(2): No such file or directory が出る場合、NAS側に指定した名前の共有フォルダが存在していません。

Bash
# NAS側の公開共有フォルダ一覧を確認
smbclient -L //192.168.1.xxx -U username%password

NASの管理画面で、マウント設定に合わせた共有フォルダ(例: backup)を新規作成し、書き込み権限を付与します。

マウントの実行と容量確認

Bash
# fstabの設定に基づいてマウント
sudo mount -a

# マウント確認
df -h | grep nas_backup

ファイルシステムと容量が正しく表示されれば、土台の接続は完了です。

2. NAS側 Restic 保管庫(リポジトリ)の再初期化

NAS側のデータが初期化されているため、Resticリポジトリを再構築します。

パスワードの打ち間違いによる Fatal: wrong password を防ぐため、バックアップスクリプトに記述されている共通パスワードを環境変数として読み込んで初期化するのが最も確実です。

Bash
# スクリプト内のパスワードを読み込んで初期化(手入力のタイポを防止)
export RESTIC_PASSWORD=$(sudo grep "^RESTIC_PASSWORD=" /root/scripts/wp-backup.sh | cut -d'"' -f2)

# NASリポジトリを初期化
restic -r /mnt/nas_backup init

created restic repository [ID] at /mnt/nas_backup と表示されれば、ローカル側の暗号化保管庫が復活します。

3. スクリプトのバックアップ対象を新環境へ更新

サイト移転やドメイン変更に伴い、バックアップ対象のパスとデータベース接続情報を更新します。

新環境のDB接続情報を確認

新サイトの wp-config.php から接続情報を抽出します。

Bash
grep -E "DB_NAME|DB_USER|DB_PASSWORD" /var/www/example.com/wp-config.php

バックアップスクリプト(wp-backup.sh)の更新

スクリプトを開き、対象サイトの配列定義を新環境に差し替えます。

Bash
sudo nano /root/scripts/wp-backup.sh
Bash
# サイトごとの個別設定
# 形式:「識別名 ディレクトリパス DB名 DBユーザー DBパスワード」
SITES=(
    "main_site /var/www/example.com example_db example_user example_password"
    "sub_site /var/www/sub.example.com sub_db sub_user sub_password"
)

4. 手動テスト走行と切り替え確認

設定が完了したら、手動でテスト実行します。

Bash
sudo /root/scripts/wp-backup.sh

実行ログのチェックポイント

  • [main_site] [sub_site] の各DBダンプが正常に終了しているか
  • 宅内NAS(リポジトリ①)と Cloudflare R2(リポジトリ②)の両方へスナップショットが保存されているか
  • エラーで中断せず、末尾に「すべてのサイトのバックアップが正常に完了しました!」と出るか

スナップショット一覧で確認

確認用スクリプト等でスナップショット一覧を出力します。

Bash
sudo restic-list
Plaintext
=== 宅内NAS のバックアップ一覧 ===
repository a1b2c3d4 opened (version 2, compression level auto)
ID        Time                 Host           Tags        Paths
----------------------------------------------------------------------------------------
1a2b3c4d  2026-09-18 03:00:15  web-server                 /tmp/wp_backup_files
                                                          /var/www/example.com
5e6f7a8b  2026-09-18 03:00:28  web-server                 /tmp/wp_backup_files
                                                          /var/www/sub.example.com
----------------------------------------------------------------------------------------

一覧の Paths に新ドメインのディレクトリが追加されていれば、新環境への切り替えはすべて完了です。旧環境のスナップショットは世代保持ポリシー(例: --keep-within 7d)によって自動的にクリーンアップされます。

まとめ

  • NAS換装時は共有フォルダの再作成とパーミッション設定を最優先で確認する
  • Resticの初期化時はスクリプトと同一のパスワードを確実に適用する
  • ドメイン移行時はスクリプト内のディレクトリパスとDB接続情報の更新を忘れずに行う

コメント

タイトルとURLをコピーしました