設定して manage VPSサーバーのバックアップRPO/RTOを定義し、バックアップ方法(スナップショット、ファイルレベル、イメージベース)を選択し、ジョブを自動化し、暗号化されたコピーをオフサイトに保存し、保持ポリシーを適用し、定期的に復元をテストします。
データ損失を最小限に抑え、復旧を迅速化するために、 3-2-1ルール(コピー3部、メディア2部、オフサイト1部)を適用してください。仮想プライベートサーバーのバックアップは必須であり、ハードウェア障害、攻撃、人為的ミスに対する最後の防衛線となります。
このステップバイステップガイドでは、実績のある安全で費用対効果が高く、初心者にも分かりやすい方法を用いて、VPSサーバーのバックアップを計画、設定、自動化、テストする方法を学びます。
VPSサーバーのバックアップが重要な理由とは?

ダウンタイムとデータ損失は大きな損失につながります。確実なバックアッププランは、ウェブサイト、アプリケーション、データベースをランサムウェア、誤削除、移行の失敗、アップデートの不具合から保護します。目標はシンプルです。
- すぐに回復する (低RTO)
- データ損失を最小限に抑える(RPOを低くする)
- コピーはオフサイトに保管し、暗号化する
脅威は進化し続けるが、規律あるバックアップ戦略は、VPSにとって最も信頼性が高く、費用対効果の高い保険であることに変わりはない。
バックアップの概念を理解しておくことは必須です
何かを設定する前に、すべてのVPSバックアップ戦略の基本を理解しておきましょう。
- スナップショットとバックアップ: スナップショットは、プロバイダーレベルの高速なディスクイメージです。即時ロールバックに最適ですが、多くの場合、同じインフラストラクチャ内に存在します。バックアップは、ポータブルでアプリケーションを認識し、オフサイトに保存されます。
- フル、インクリメンタル、ディファレンシャル: フルバックアップはすべてのデータをコピーします。増分バックアップは前回のバックアップ以降の変更点を保存します。差分バックアップは前回のフルバックアップ以降の変更点を保存します。増分バックアップは最もストレージ効率が良い方法です。
- 3-2-1 ルール: 2種類の媒体に3部コピーを保管し、うち1部は外部に保管する。
- RPO/RTO: 復旧ポイント目標(許容可能なデータ損失)と復旧時間目標(許容可能なダウンタイム)は、スケジュールとツール選定の指針となります。
- アプリケーションの一貫性: データベースは、破損を防ぐために、一貫性のあるダンプまたはスナップショットを必要とします。
- 暗号化と不変性: 保存時および転送時のデータを暗号化する。ランサムウェア対策として、オブジェクトロック/不変性を活用する。
VPSバックアップ戦略を計画する
まずは明確にしましょう。何をバックアップするのか、どこに保存するのか、そしてどのように復元するのかを文書化してください。
- バックアップすべきもの: ウェブルート(/var/www)、アプリケーションコード、設定(/etc)、 SSL キー、ユーザーアップロード、およびデータベース(MySQL/MariaDB/PostgreSQL)
- 対応周波数: RPOへのマッピング。例:トラフィックの多いサイトの場合は1時間ごとの増分更新と夜間の削除。ブログの場合は夜間の削除。
- 保持: 一般的な設定:毎日(7)、毎週(4)、毎月(12)。コンプライアンスと予算に合わせて調整してください。
- 目的地: オフサイトのS3互換ストレージ、別のリージョン、または専用のバックアップストレージ。
- ツール: プロバイダーのスナップショット、cPanel/Plesk バックアップ、rsync/tar、またはrestic/borgのような最新の重複排除ツール。
多くのチームにとって最適なのは、ハイブリッド方式です。迅速なロールバックのためにプロバイダーのスナップショットを頻繁に取得し、災害復旧のために暗号化されたオフサイトバックアップを作成するという方法です。
方法1:プロバイダのスナップショットを使用する(高速ロールバック)
プロバイダーのスナップショット機能は、VPSディスクの特定時点のイメージを作成します。大規模なアップデートやデプロイメントの前に使用するのに最適です。
- メリット: ワンクリックで素早く復元、 サーバー負荷 復元時。
- デメリット: 通常は同じプロバイダー内で処理されます。オフサイトバックアップの代替となるものではありません。
- ステップ:
- 自動を有効にする ホストが提供している場合は、毎日のスナップショットを撮ってください。
- マニュアルを作成する アップグレードまたは移行前のスナップショット。
- 定期的に輸出 スナップショットを作成するか、オフサイトバックアップと組み合わせる。
ヒント: YouStable VPSは自動スナップショット機能とオプションのオフサイトバックアップアドオンを提供しているため、即時ロールバックと災害対策ストレージを組み合わせることができます。
方法2:Resticを使用した自動オフサイトバックアップ(推奨)
レスティック は、暗号化機能を内蔵した高速なオープンソースの重複排除バックアップツールです。S3互換ストレージをサポートし、 SFTPさらに、自動化されたオフサイトVPSバックアップにも最適です。
前提条件
- Ubuntu / Debian サーバー(他のディストリビューションでも同様のコマンド)。
- S3互換バケット(例:AWS、Wasabi、Backblaze、またはプロバイダーのオブジェクトストレージ)。
- 最小限の権限で、1つのバケット/パスへのアクセスキー。
1. Restic を取り付けます
sudo apt-get update
sudo apt-get install -y restic2. セキュアな環境変数を設定する
認証情報とリポジトリ設定を格納するファイルを作成します。
sudo bash -c 'cat >/root/.restic-env' <<'EOF'
export RESTIC_REPOSITORY="s3:https://s3.YOUR-PROVIDER.com/your-bucket/vps1"
export AWS_ACCESS_KEY_ID="YOUR_ACCESS_KEY"
export AWS_SECRET_ACCESS_KEY="YOUR_SECRET_KEY"
export RESTIC_PASSWORD="Choose-A-Strong-Unique-Password"
EOF
sudo chmod 600 /root/.restic-env3. リポジトリを初期化する
source /root/.restic-env
restic init4. 除外設定とバックアップスクリプトを作成する
キャッシュ、一時ファイル、その他の不要なパスを除外します。
sudo bash -c 'cat >/root/.backup-excludes.txt' <<'EOF'
/proc
/sys
/tmp/*
/var/cache/*
/var/tmp/*
/swapfile
EOF
sudo chmod 600 /root/.backup-excludes.txtバックアップスクリプトを作成します。
sudo bash -c 'cat >/usr/local/sbin/vps-backup.sh' <<'EOF'
#!/usr/bin/env bash
set -euo pipefail
source /root/.restic-env
HOST=$(hostname)
EXCLUDES=/root/.backup-excludes.txt
# Optional: create fresh database dumps before file backup
# MySQL/MariaDB example:
# mysqldump --single-transaction --routines --triggers --events --all-databases | gzip > /var/backups/mysql-$(date +%F).sql.gz
# PostgreSQL example:
# sudo -u postgres pg_dumpall | gzip > /var/backups/postgres-$(date +%F).sql.gz
restic backup
--host "$HOST"
--tag "daily"
--exclude-file "$EXCLUDES"
/etc /var/www /var/backups
# Retention policy: adjust to your needs
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 12 --prune
# Integrity check
restic check --with-cache
EOF
sudo chmod 700 /usr/local/sbin/vps-backup.sh5. 毎晩バックアップをスケジュールする(Cron)
(crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/sbin/vps-backup.sh >> /var/log/vps-backup.log 2>&1") | crontab -オプション:スクリプト内で、成功/失敗のpingを監視URL(例:ヘルスチェック)に送信してアラートを取得します。
6. リストアのテスト(スキップしないでください)
source /root/.restic-env
mkdir -p /restore-test
restic snapshots
restic restore latest --target /restore-test --include /var/www
ls -lah /restore-test/var/wwwファイル、アクセス権限、および整合性を確認してください。定期的な復元テストは、バックアップが実際に機能していることを証明します。
方法3:アプリケーション整合性のあるデータベースバックアップ
ファイルバックアップだけでは、進行中のデータベース書き込みを見逃す可能性があります。整合性を確保するには、論理ダンプまたは物理ダンプを追加してください。
MySQL/MariaDB (論理ダンプ)
mysqldump --user=root -p
--single-transaction --routines --triggers --events --all-databases
| gzip > /var/backups/mysql-$(date +%F).sql.gzresticジョブに/var/backupsを含めてください。非常に大きなデータセットの場合は、mariabackup/Percona XtraBackupの使用を検討してください。
PostgreSQL(論理ダンプ)
sudo -u postgres pg_dumpall | gzip > /var/backups/postgres-$(date +%F).sql.gzあるいは、データベースごとにpg_dumpを使用するか、物理的なストリーミングバックアップにはpg_basebackupを使用してください。
練習すべきシナリオを復元する
- 単一ファイルの復元: サーバー全体に手を加えることなく、設定ファイルやメディアファイルのアップロードを復元します。
- アプリのロールバック: /var/www を、最新の正常なスナップショットまたはバックアップで復元します。
- サーバー全体の再構築: 新しいVPSをプロビジョニングし、resticをインストールし、/etc、/var/www、およびデータベースのダンプを復元してから、サービスを再起動します。
# Example: single directory restore
source /root/.restic-env
restic restore latest --target /restore --include /etc/nginxプロバイダーのスナップショットの場合、通常はワンクリックで復元するか、ボリュームを置き換えるだけで済みます。これは高速ですが、耐障害性を確保するためにはオフサイトバックアップと組み合わせる必要があります。
セキュリティとコンプライアンスのベストプラクティス
- 暗号化する 保存時および転送時のバックアップは必ず保管し、スクリプト内に平文の認証情報を保存しないでください。
- 最小権限: オブジェクトストレージのキーを、1つのバケットとネームスペースに制限する。
- 不変性: ランサムウェアによる改ざんを防ぐため、オブジェクトロック/ワームとバケットバージョン管理を有効にしてください。
- 別々のアカウント/地域 プロバイダーレベルの障害発生時にもオフサイトコピーが破損しないようにするため。
- 監査とログ: バックアップログを保持し、アクセスログを保管し、定期的にキーを交換してください。
コスト最適化のヒント
- 増分重複排除 (restic/borg) 変更されていないデータのストレージを50~90%削減します。
- Apply 除外 キャッシュと一時パス用。
- 曲の保持: 予算が厳しい場合は月払いの回数を減らし、安全のために週払いの回数を増やしましょう。
- 古いバックアップを移動 低コストのストレージクラス サポートされている場合。
- 帯域幅を節約するために、ピーク時間外にバックアップをスケジュールし、 CPU.
避けるべき一般的な間違い
- 同じプロバイダに保存されているスナップショットのみに依存する。
- 復元テストを全く行わないこと(最も高くつく間違い)。
- ダンプや静止処理を行わずに、不整合なデータベースをバックアップする。
- 秘密情報を世界中の人が閲覧可能なファイルやリポジトリに保存する。
- ログとサイレント障害を無視して cronジョブ.
クイックリファレンス: Rsync の代替手段 (SFTP/別のサーバー)
別のサーバーへのシンプルなファイル同期を希望する場合は、rsync を使用してください。 SSHこれはresticのように重複排除はされませんが、シンプルです。
rsync -aHAX --delete --numeric-ids
--exclude-from=/root/.backup-excludes.txt
/etc /var/www /var/backups
[email protected]:/backups/$(hostname)/これに加えて、定期的なデータベースダンプを実行し、ロールバックのために保存先にバージョン管理機能またはスナップショット機能が備わっていることを確認してください。
よくあるご質問
ほとんどのウェブサイトにとって、VPSをバックアップする最良の方法は何ですか?
ハイブリッド方式:毎晩、resticまたはborgを使用して暗号化されたオフサイトバックアップ(データベースダンプを含む)を実行し、さらにプロバイダーのスナップショットを毎日取得して即時ロールバックを可能にする。これにより、迅速な復旧と真の災害耐性を両立させる。
VPSのバックアップはどのくらいの頻度で実行すべきですか?
RPOに合わせて頻度を調整してください。動的なアプリやオンラインショップの場合は、1時間ごと、少なくとも毎晩実行してください。ブログや小規模サイトの場合は、毎晩実行してください。長期的な保護のために、週次と月次の実行は必ず行ってください。
VPSのバックアップにはスナップショットだけで十分でしょうか?
いいえ。スナップショットは高速ですが、通常は同じプロバイダ内に保存されるため、アカウントの問題の影響を受ける可能性があります。スナップショットは迅速なロールバックに使用し、真の災害復旧にはオフサイトバックアップを使用してください。
バックアップのテスト方法を教えてください。
ファイルレベルの復元を別のパスに実行し、データの整合性を確認し、四半期ごとにサーバー全体の復元を訓練してください。手順を文書化し、運用マニュアルを常に最新の状態に保ってください。
VPSのバックアップにはどれくらいのストレージ容量が必要ですか?
まずは、重複排除ツールを使って30日間のデータ保持期間を確保し、データサイズの2~3倍の容量を用意しましょう。データやデータベースの動的な変化が大きい場合は、さらに多くの容量が必要になる場合があります。データの増加を監視し、保持ポリシーを調整してください。
RPO/RTOを計画し、暗号化されたオフサイトバックアップを自動化し、復元をテストすることで、VPS を障害や脅威から保護することができます。専門家のサポートが必要な場合は、 YouStable バックアップ戦略の設計と管理をエンドツーエンドでサポートできます。
