BorgBackupとrsyncによるLinuxサーババックアップとリストア検証手順
1. バックアップ対象と保存先の設計
まずバックアップ対象を決める。対象は、業務データを格納するディレクトリ、各種設定ファイルのある /etc、インストール済みパッケージの一覧、データベースのダンプファイルである。システム全体を丸ごと取得する方法もあるが、復旧に必要な範囲を絞ることで容量と所要時間を抑えられる。保存先はサーバ本体とは別のストレージとし、同一ラック内の別筐体、あるいは別系統のネットワーク越しの保管場所を用意する。バックアップ先が同一ディスク障害で同時に失われては意味がない。世代管理は日次で14世代、週次で8世代、月次で12世代を目安とし、BorgBackupの prune 機能で自動整理する。暗号化は repokey モードでリポジトリへ鍵を保管し、パスフレーズはパスワード管理台帳へ記録する。鍵を紛失すれば復旧が不可能になるため、鍵情報の保管場所はバックアップ先とは別に管理する。
2. BorgBackupの初期設定と日次バックアップの自動化
BorgBackupの導入手順は次のとおりである。まず borg init --encryption=repokey でリポジトリを作成し、バックアップ対象を指定して borg create で初回バックアップを取得する。初回は全量転送となるため、業務の閑散期に実施する。二回目以降は変更ブロックのみが転送されるため短時間で完了する。設定ファイルやデータベースダンプは、バックアップ直前にスクリプトで最新化してから borg create を実行する。日次実行は systemd のタイマーまたは cron で夜間に予約し、実行結果と終了コードをログへ記録する。borg list でアーカイブ一覧を確認し、borg info で圧縮前後の容量と重複排除の効果を把握する。バックアップが失敗した場合は即座に通知する仕組みを組み込み、失敗に気付かずに世代だけが進む状態を防ぐ。リポジトリの整合性は borg check で定期的に検証する。
3. rsyncによるミラー同期とリストア検証の実施
BorgBackupとは別に、rsync によるミラー同期を第二の復旧経路として用意する。rsync -a --delete を使うことで、送信元と送信先の内容を一致させ、削除されたファイルも反映させる。ただし --delete は誤操作時の被害が大きいため、まず --dry-run で差分を確認してから本実行することが鉄則である。大事なデータは、同期先でも世代を残すため --backup-dir を併用して削除ファイルを別ディレクトリへ退避させる。リストア検証は四半期に一度、実機または検証用サーバで必ず実施する。検証では、BorgBackup のアーカイブから borg extract で指定ディレクトリを復元し、設定ファイルの内容と業務データの読み込みを確認する。復元したデータをそのまま本番へ戻すのではなく、検証環境で動作を確認したうえで復旧手順書へ実際に要した時間と手順を記録する。検証結果を残すことで、障害時に「復旧できるはず」が「復旧できた実績」へ変わる。