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 updateとwp plugin update --allでアップデートしてください
まとめ
復元前に現在の状態を保存し、メンテナンスモードを有効にします。wp db import でデータベースを復元し、tar でwp-contentを復元します。URLが変わっている場合は wp option update と wp search-replace で修正します。最後に wp cache flush と wp rewrite flush でキャッシュをリセットしてメンテナンスモードを解除します。