2026年5月20日

2026年5月20日

WordPressをバックアップから復元する方法

はじめに

サイトが壊れた・ハッキングされた・誤って記事を削除したなど、緊急時にバックアップから素早く復元できることが重要です。データベースの復元・ファイルの復元・URLの修正を正しい順序で実施する手順を解説します。

症状・原因

  • WordPress更新後にサイトが白い画面(WSOD)になった
  • ハッキング被害を受けてクリーンな状態に戻したい
  • 誤って重要な記事・設定を削除してしまった
  • サーバー移行中にデータが壊れた

解決手順

ステップ1:復元前の準備

# 現在の状態をスナップショットとして保存(復元に失敗した場合の保険)
wp db export /tmp/current_state_$(date +%Y%m%d_%H%M%S).sql
tar -czf /tmp/current_files_$(date +%Y%m%d).tar.gz /var/www/html/wp-content

# バックアップファイルの確認
ls -lh /backups/
gzip --test /backups/db_20240115.sql.gz && echo "バックアップ正常"

# サイトをメンテナンスモードに切り替え
wp maintenance-mode activate

# またはHTMLファイルで一時的にメンテナンス表示
echo '<h1>メンテナンス中です。しばらくお待ちください。</h1>' > /var/www/html/.maintenance

ステップ2:データベースを復元する

# 方法1: WP-CLIで復元(推奨)

# gzip圧縮されている場合
zcat /backups/db_20240115.sql.gz | wp db import -

# 非圧縮の場合
wp db import /backups/db_20240115.sql

# 復元後の確認
wp post list | head -10
wp option get siteurl
wp option get home
# 方法2: mysqlコマンドで復元

# 既存のデータベースを削除して再作成
mysql -u root -p -e "DROP DATABASE wp_database; CREATE DATABASE wp_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

# バックアップをインポート
zcat /backups/db_20240115.sql.gz | mysql \
  --host=localhost \
  --user=wp_user \
  --password=wp_password \
  wp_database

# テーブル数で復元確認
mysql -u wp_user -p wp_database -e "SHOW TABLES;" | wc -l
# 方法3: phpMyAdminで復元(GUI)
# 1. phpMyAdmin にアクセス
# 2. 対象データベースを選択 → 「インポート」タブ
# 3. バックアップファイルを選択(.sql または .sql.gz)
# 4. 「実行」をクリック
# ※ max_upload_filesize の制限に注意(大容量は分割が必要)

ステップ3:ファイルを復元する

# wp-content の復元(画像・プラグイン・テーマ)

# バックアップを展開
mkdir -p /tmp/restore
tar -xzf /backups/files_20240115.tar.gz -C /tmp/restore

# wp-content を上書き(既存ファイルは削除してから)
rm -rf /var/www/html/wp-content
cp -r /tmp/restore/wp-content /var/www/html/

# WordPressコアを再インストール(最新版)
wp core download --force

# パーミッションを修正
chown -R www-data:www-data /var/www/html
find /var/www/html -type f -exec chmod 644 {} \;
find /var/www/html -type d -exec chmod 755 {} \;
chmod 600 /var/www/html/wp-config.php

ステップ4:URLと設定を修正する

# 復元後のURLが異なる場合(例: バックアップがステージングのもの)

# 現在のURLを確認
wp option get siteurl
wp option get home

# URLを本番環境のものに変更
wp option update siteurl 'https://example.com'
wp option update home 'https://example.com'

# データベース内のURLを一括置換(ステージング→本番)
wp search-replace 'https://staging.example.com' 'https://example.com' \
  --skip-columns=guid \
  --report-changed-only

# キャッシュをクリア
wp cache flush
wp rewrite flush

# メンテナンスモードを解除
wp maintenance-mode deactivate
rm -f /var/www/html/.maintenance

ステップ5:UpdraftPlusで復元する

UpdraftPlus からの復元手順:

1. 設定 → UpdraftPlus Backups → 「既存のバックアップ」タブ
2. 復元したいバックアップ日時を選択
3. 「復元」ボタンをクリック
4. 復元するコンポーネントを選択:
   ✓ データベース
   ✓ プラグイン
   ✓ テーマ
   ✓ アップロード
   ✓ その他のファイル
5. 「次へ」→ 「復元」を実行
6. 復元完了後、サイトを確認

リモートストレージからの復元:
  Google Drive / S3 に保存したバックアップも
  「リモートストレージをスキャン」から取得して復元可能

注意事項

  • 復元作業前に必ず現在の状態をバックアップしてください。復元に失敗した場合の保険です
  • データベースを復元した後、ファイルを復元する前にサイトにアクセスするとエラーが発生します。必ずDBとファイルを両方復元してからアクセスしてください
  • 移行元と移行先でWordPressのバージョンが大きく異なる場合、復元後にwp core updatewp plugin update --allでアップデートしてください

まとめ

復元前に現在の状態を保存し、メンテナンスモードを有効にします。wp db import でデータベースを復元し、tar でwp-contentを復元します。URLが変わっている場合は wp option updatewp search-replace で修正します。最後に wp cache flushwp rewrite flush でキャッシュをリセットしてメンテナンスモードを解除します。

お気軽にご相談ください

お見積りへ お問い合わせへ