更新やプラグインの操作でサイトが壊れた、あるいは改ざんされた——そんなときに頼りになるのがバックアップからの復元です。ただし、WordPressのサイト復元は「どこに・どの方式でバックアップを取っていたか」で手順がまったく変わります。やみくもにファイルを上書きすると、かえって状態を悪化させたり、新旧のデータが混在して二重に壊れたりします。まずは自分のバックアップの種類を見極め、それに合った手順を上から順にたどってください。
⚠️ 復元は「壊れる前の状態に戻す」操作のため、復元後に作った記事・受信したコメント・注文データなどは消えます。可能なら作業前に、今の(壊れている)状態のファイルとデータベースも別名でコピーしておいてください。判断に迷う・お客様のサイトで一刻を争う場合は、無理に操作せず復元代行の相談へ進むのが安全です。
まず確認:復元の前に把握すること
復元方法を選ぶ前に、次の3点を確認します。ここが曖昧なまま進めると、復元しても直らない・別の不具合が出る、という事態になりがちです。
- どのバックアップがあるか — プラグイン(UpdraftPlus等)/レンタルサーバーの自動バックアップ/手動で取った
.zip+.sql/まったく無し、のどれか - いつ時点に戻したいか — 「正常に動いていた最後の日時」を決める。直近のバックアップが既に壊れた後のものだと、復元しても直りません
- 全体を戻すか・一部だけ戻すか — サイトごと戻すのか、特定のファイル(テーマ・プラグイン)やDBの一部だけ戻すのかで難易度が変わります
バックアップの種類と復元方法の対応
WordPressのバックアップは「ファイル一式」と「データベース」の2つで1セットです。どちらか片方だけでは完全には戻りません。取得方法別に、対応する復元手順を整理します。
| バックアップの取得方法 | 含まれるもの | 復元手順 | 難易度 |
|---|---|---|---|
| UpdraftPlus(プラグイン) | ファイル+DB(分割保存) | 管理画面から復元(手順1) | やさしい |
| All-in-One WP Migration(プラグイン) | サイト一式(.wpress) | 管理画面でインポート(手順1) | やさしい |
| BackWPup(プラグイン・無料版) | ファイル+DB(.zip内に.sql) | 手動復元が必要(手順3) | 中 |
| レンタルサーバーの自動バックアップ | サーバーが保持する世代 | 管理画面から復元/取得(手順2) | サーバーによる |
手動(FTPで.zip+phpMyAdminで.sql) | 自分で取得した一式 | 手動復元(手順3) | やや高い |
| バックアップが無い | — | 復元以外の選択肢(後述) | — |
管理画面(/wp-admin)にログインできるかどうかも分岐点です。ログインできるならプラグインでの復元が最短です。ログインすらできない場合は、手順2・手順3のサーバー/手動での復元になります。
手順1 プラグインで取ったバックアップから復元する
管理画面にログインでき、バックアッププラグインを使っていた場合はこれが最も安全です。
UpdraftPlus の場合
- 管理画面の 「設定」→「UpdraftPlus Backups」 を開く
- 「Existing backups(既存のバックアップ)」 欄に、取得済みのバックアップが日時順に並びます
- 戻したい日時の行で 「Restore(復元)」 をクリック
- 復元する構成要素(Plugins / Themes / Uploads / Others / Database)にチェックを入れる。サイトごと戻すなら全部、テーマだけ戻したいならThemesのみ、と選べます
- 画面の指示に従って進めると、自動でファイルとDBが書き戻されます
Google DriveやDropboxなど外部ストレージに保存していた場合も、同じ画面の「Rescan remote storage」で一覧に取り込んでから復元できます。サーバーを引っ越した先で復元する場合は、.zip 群を wp-content/updraft/ に置いてから再スキャンします。
All-in-One WP Migration の場合
このプラグインは .wpress という独自形式でサイト一式を1ファイルに固めます。復元は 「All-in-One WP Migration」→「インポート」 から .wpress ファイルを読み込むだけです。ただし無料版にはアップロード容量の上限があり、サイトが大きいと「ファイルサイズが上限を超えています」と弾かれます。その場合は上限を引き上げる拡張機能を入れるか、後述の手動復元に切り替えます。
⚠️ インポートは現在のサイトの内容を上書きします。実行後にログイン情報も復元時点のものに変わるため、復元元のユーザー名・パスワードを控えておいてください。
BackWPup(無料版)の場合
BackWPupの無料版には「ワンクリック復元」機能がありません(復元機能は有料版のみ)。無料版で取得したバックアップ(.zip)から戻すには、ZIPを展開してファイルをFTPで戻し、中に入っているデータベースの .sql をphpMyAdminでインポートする——つまり手順3の手動復元と同じ作業になります。「BackWPupで取ったのに復元ボタンが無い」のはこのためです。
手順2 レンタルサーバーの自動バックアップから復元する
プラグインを入れていなくても、契約しているレンタルサーバー側が自動でバックアップを保持していることがあります。プランやオプションによって有無・世代数・復元方法が異なるため、代表的な3社をまとめます。正確な仕様・操作は必ず各社の管理画面とマニュアルで確認してください(仕様は変更されることがあります)。
| サーバー | 自動バックアップ | 復元の方法(管理画面) | 注意点 |
|---|---|---|---|
| さくらのレンタルサーバ | 「バックアップ&ステージング」機能で複数世代を自動保持 | コントロールパネル →「バックアップ&ステージング」から対象世代を選んで復元 | プランにより利用可否が異なる。ステージングで内容を確認してから本番へ反映できる |
| エックスサーバー | Web領域・MySQLを自動で一定期間分保持(無料) | サーバーパネル →「バックアップ」からWeb・MySQLの自動バックアップデータを取得し、ファイルは復元、MySQLはインポートで戻す | データの「取得」と「サイトへの反映」は別作業。取得後の戻しは手順3に準じる |
| ロリポップ! | 「バックアップオプション」(有料)で7世代を自動保持 | ユーザー専用ページのバックアップ画面から復元リクエストを送る | 無料プランは対象外のことが多い。復元はリクエスト単位での申請制 |
サーバーの自動バックアップは「全体をまるごと特定日時に戻す」用途に向いています。一方、サイトが改ざん(マルウェア混入)された場合は、感染前の世代まで戻さないと再発します。直近のバックアップが既に感染後だと、復元しても再び不正ファイルが復活するため、世代を1つずつさかのぼって確認します。
手順3 手動でバックアップから復元する(FTP+phpMyAdmin)
管理画面に入れない、またはプラグインに復元機能が無い場合の最終手段です。WordPressは「ファイル一式」と「データベース」の2つを戻せば復元できます。
3-1 ファイルを戻す(FTP)
FTPソフト(FileZilla等)やサーバーのファイルマネージャで、バックアップした wp-content(テーマ・プラグイン・アップロード画像)を中心にサーバーへアップロードします。サイトごと戻すなら、wp-config.php を除く WordPress 一式を上書きします。
⚠️
wp-config.phpは現在のサーバーのDB接続情報が書かれた重要ファイルです。別サーバーのバックアップから上書きすると接続情報がずれて「データベース接続確立エラー」になります。原則として現在のwp-config.phpは残してください。
3-2 データベースを戻す(phpMyAdmin)
- サーバー管理画面から phpMyAdmin を開く
- 対象のデータベースを選び、既存のテーブルを一度削除(または空のDBを用意)
- 上部の 「インポート」 タブから、バックアップの
.sqlファイルを選んで実行
SSHが使えるサーバーやVPSなら、コマンドで戻す方が確実で速い場合があります。
# データベースに .sql を流し込む(既存データは置き換わる)
mysql -u DBユーザー名 -p データベース名 < backup.sql
WP-CLIが入っていれば、サイトのディレクトリで次のコマンドでもインポートできます。
wp db import backup.sql
3-3 サイトURLが変わる場合
ローカルや別ドメインで取ったバックアップを本番へ戻すと、DB内に旧URLが残り、画像が表示されない・リンク切れが起きます。WP-CLIの search-replace で一括置換します(必ずDBのバックアップを取ってから実行)。
wp search-replace 'https://old-domain.com' 'https://new-domain.com' --skip-columns=guid
バックアップが無い・復元できないとき
「バックアップを取っていなかった」「取っていたが壊れていて戻せない」というケースは少なくありません。この場合、復元以外の選択肢を検討します。
- サーバー側の自動バックアップを再確認 — 自分では取っていなくても、手順2のとおりサーバーが保持していることがあります。まず管理画面のバックアップ項目を確認してください
- Googleキャッシュ・Wayback Machineから文章を回収 — 画像やレイアウトは戻りませんが、記事本文はインターネットアーカイブ等から手作業で拾える場合があります
- 破損箇所だけを修復する — DBの破損ならデータベース接続確立エラーの対処、表示が真っ白なだけなら別の原因切り分けで、復元せずに直ることもあります
- 専門業者にデータ救出を依頼する — サーバーにファイルとDBさえ残っていれば、バックアップが無くても現状からの復旧・サルベージが可能なケースがあります
特に改ざん・マルウェア感染で、いつから感染していたか分からない場合は、自力での復元はおすすめしません。感染後のバックアップに戻すと再発し、感染前まで戻すと最近の更新が全て失われます。どの世代に戻すべきかの見極めには専門的な調査が必要です。
復元後に必ず確認すること
復元はファイルを書き戻して終わりではありません。以下を順に確認してください。
- トップページと
/wp-adminの両方が開くか — 片方だけ直っていることがあります - 画像が表示されているか・リンク切れが無いか — URLのずれ(3-3)が残っていないか
- プラグインが有効化されたままで競合していないか — 一度すべて停止し、1つずつ有効化して原因を切り分けると安全です
WP_ALLOW_REPAIRなど一時的に追記した行を消したか — 修復作業で追記した設定はセキュリティ上必ず削除します- 改めてバックアップを取り直す — 復元できた直後の正常な状態を、今度はプラグイン+サーバーの二重で保存しておきます
よくある質問
復元すると、今ある記事やコメントは消えますか?
はい。バックアップは「取得した時点」の状態です。復元するとその時点に巻き戻るため、バックアップ取得後に追加された記事・コメント・受注データは失われます。どうしても残したいデータがある場合は、復元前に現在のDBを書き出し、復元後に該当部分だけを手作業で戻す必要があります。
バックアップファイルが壊れていて復元できません
ZIPが展開できない、.sqlのインポートが途中でエラーになる場合、バックアップ自体が破損しています。別の世代(少し前の日時)のバックアップがあればそちらを試します。複数の保存先(プラグイン・サーバー・外部ストレージ)に取っていれば、いずれかが無事なことが多いため確認してください。すべて壊れている場合は「バックアップが無いとき」と同じ対応になります。
引っ越し(サーバー移行)のための復元と何が違いますか?
基本の作業(ファイル+DBを戻す)は同じですが、移行ではドメインやサーバー名が変わるため、wp-config.php の接続情報の書き換えと、DB内URLの一括置換(3-3)が追加で必要になります。手順はサーバー移行ガイドを参照してください。
自分で復元するのが不安です
データベースやファイルの上書きは、誤るとサイトのデータを完全に失うリスクがあります。「お客様に見せている最中」「ECで注文が入っている」といった場面では、無理に操作せず、専門家による復元・データ救出をおすすめします。当社ではバックアップの有無にかかわらず、現状からの復旧サポートを行っています。