復元手順

🌐 言語: 🇻🇳 Tiếng Việt · 🇬🇧 English · 🇯🇵 日本語(現在)

状況別の復元ガイド — 正しい範囲を選び、正しい順序で行う

はじめに

問題が起きたときに最も大切なのは、壊れた部分だけを復元することです。設定を 1 つ間違えただけで、サイト全体を過去に戻す必要はありません。 このドキュメントは復元が必要なサイトのオーナーと管理者向けで、状況に応じた復元範囲の選び方、復元画面での手順、元に戻す方法、 セキュリティインシデント後の復元、別のサイトで作成したバックアップの使い方を説明します。バックアップの設定は バックアップと復元をご覧ください。

ひと目でわかる

画面からの復元はすべて同じ 5 つの段階を通ります。確認コードを入力するまで、データは一切書き込まれません。

flowchart LR
    A["バックアップ<br/>と範囲を<br/>選ぶ"] --> B["パスワード<br/>/ キーで<br/>開く"]
    B --> C["変更内容を<br/>プレビュー"]
    C --> D["確認コード<br/>を入力"]
    D --> E["実行<br/>24 時間<br/>元に戻せる"]
  • 問題を解決できる最小の範囲を選びます — サイトの他の部分は新しいデータのまま残ります。
  • 必ずプレビューします — 置き換えられるテーブルと、失われる新しいデータの量が表示されます。
  • データを置き換える範囲は 24 時間以内なら元に戻せます — 間違えても取り消せます。
  • 侵入が疑われるときは、通常の復元ではなくセキュリティインシデント後の復元を使います。

このページの内容

状況に応じて復元範囲を選ぶ

次の質問に順に答え、問題を解決できる最初の範囲で止まります。

flowchart TB
    Q0{"侵入?"} -->|"はい"| P["インシデント<br/>後の復元"]
    Q0 -->|"いいえ"| Q1{"数件だけ<br/>消えた?"}
    Q1 -->|"はい"| U["削除した<br/>レコードを<br/>戻す"]
    Q1 -->|"いいえ"| Q2{"設定だけ<br/>壊れた?"}
    Q2 -->|"はい"| C["設定"]
    Q2 -->|"いいえ"| Q3{"一部の<br/>グループ?"}
    Q3 -->|"はい"| R["データ<br/>グループを<br/>置き換え"]
    Q3 -->|"いいえ"| F["データ<br/>ベース全体"]
状況 範囲 起きること
商品、顧客、注文を数件誤って削除した 削除したレコードを戻す 不足しているレコード(子レコードを含む)だけを戻し、既存のものは変更しません
設定変更でサイトがおかしくなった 設定 設定がバックアップの状態に戻ります。バックアップ設定はそのまま残ります
商品や価格の一括取り込みを誤った データグループを置き換え 選んだグループがバックアップの状態に戻り、他のグループはそのままです
更新で多くのテーブルが壊れた データベース全体 データベース全体がバックアップの状態に戻ります。全体バックアップが必要です
サイトが乗っ取られた セキュリティインシデント後の復元 データベース全体 + 全員のログアウト、トークン失効、新しいパスワードの要求
アップロード画像の消失、拡張機能の破損 ファイルの復元 コマンドラインのみ — ファイルの復元を参照

💡 ヒント: 更新が失敗したら、その操作の直前に GP247 が自動作成した「変更前」のバックアップを探してください。たいていそれが最適です。

画面での復元手順

Backup - restore 権限が必要です。すべての復元はログに記録され、サイトのオーナーにメールが届きます。

  1. システム設定 → バックアップと復元を開き、使いたいバックアップで復元をクリックします(復元できるのは検証済みのバックアップだけです)。
  2. 復元する内容で、上の表から範囲を選びます。データグループを置き換えではグループにチェックを入れ、削除したレコードを戻すでは テーブルを選んでからレコードを選びます(またはすべて戻す)。
  3. バックアップ用パスワードまたはリカバリーキーを入力し、ログインパスワードで本人確認をします。
  4. プレビューをクリックします。この復元で行われることをよく読みます。置き換えられるテーブル、現在とバックアップ内のレコード数、 失われる新しいデータ、パスワードや API キーを含むテーブル(バックアップの時点以降に削除・変更したアカウントやキーが戻ります)が表示されます。
  5. 画面に表示されたコードを確認欄に入力して開始します。
  6. 結果が表示されるまでタブを開いたままにします。データベース全体の場合、実行中はサイトがメンテナンスモードになりますが、 開始したあなただけは管理画面を使えます。

成功すると結果が表示され、期限付きの前回の復元を元に戻すボタンが表示されます。

⚠️ 注意: 置き換えたテーブルでは、バックアップの時点以降に作成されたデータ(新しい注文、新しい顧客など)がサイトから消えます。 残したい注文は事前に控えておくか、より小さな範囲を選んでください。

復元を元に戻す

違うバックアップや違うグループを復元してしまっても、別のバックアップなしで元に戻せます。

  1. 復元画面を開くと、上部に「前回の復元は … まで元に戻せます」と表示されています。
  2. 前回の復元を元に戻すをクリックして確認します。
  3. 復元で置き換えられたテーブルが、復元の直前の状態にそのまま戻ります。
  • 元に戻せる期限は復元から 24 時間です。
  • 元に戻せるのは直近の復元だけです。
  • 削除したレコードを戻すには「元に戻す」はありません — この範囲は不足しているレコードを追加するだけで、テーブルを置き換えないためです。

ファイルの復元(画像、拡張機能、.env)

ファイルの復元はサーバー上のフォルダーを上書きするため、コマンドラインからのみ、確認の質問に人が答えながら行います。 バックアップは全体バックアップである必要があります。

  1. プレビューします。

    php artisan gp247:backup-restore <バックアップID> --files=uploads --preview
    
  2. 本番実行します(--preview を外し、確認の質問に答えます)。

    php artisan gp247:backup-restore <バックアップID> --files=uploads
    

選べるファイルグループは uploads(アップロードした画像やファイル)、extensions(プラグイン / テンプレートのフォルダー)、env(.env ファイル)です。 --level=full と組み合わせてデータの復元と同時に行えます。

⚠️ 注意: .env を復元するとサイトの暗号化キーも置き換わります。現在の .env が失われたか壊れたときだけ行い、事前に 暗号化キーとバックアップを読んでください。

セキュリティインシデント後の復元

サイトが乗っ取られた疑いがあるとき、通常の復元では不十分です。攻撃者はログインセッション、API トークン、知っているパスワードをまだ持っています。 セキュリティインシデント後の復元は、復元の直後にそれらの対処も行います。

flowchart TB
    subgraph S1["復元の前"]
        direction LR
        A["侵入より<br/>前の<br/>バックアップ"] --> B["インシデント<br/>後の復元に<br/>チェック"]
    end
    subgraph S2["GP247 が行う"]
        direction LR
        C["データ<br/>ベース全体<br/>を復元"] --> D["全員を<br/>ログアウト"] --> E["トークン失効<br/>パスワード<br/>再設定"]
    end
    subgraph S3["あなたが行う"]
        direction LR
        F["暗号化<br/>キーを<br/>更新"] --> G["元のソース<br/>からコード<br/>再導入"] --> H["ホスティング<br/>と DB の<br/>パスワード"]
    end
    S1 --> S2 --> S3
  1. 侵入が疑われる時点より前に作成されたバックアップを選びます(それ以降のバックアップには、攻撃者が仕込んだアカウントやデータが含まれているおそれがあります)。
  2. 復元画面でデータベース全体を選び、セキュリティインシデント後の復元にチェックを入れます。
  3. 通常どおりプレビューと確認を行います。完了した直後に、すべてのログインセッションが終了し(あなた自身も含む)、すべての API / MCP トークンが 失効し、すべての管理者が次回ログイン時に新しいパスワードを設定する必要があります。
  4. 再ログインして新しいパスワードを設定します。バックアップ画面に手動で行う作業の一覧が表示されます。
    • サイトの暗号化キーを更新する(.env に新しいキーを設定し、古いキーを旧キー用の変数へ移し、キー更新コマンドを実行 — 画面に正確なコマンドが表示されます)。
    • コード(core、プラグイン、テンプレート)を元のソースから再導入する。
    • データベース、ホスティング、FTP、メールのパスワードを変更する。
    • php artisan gp247:doctor を実行し、報告された問題に対処する。
  5. 終わったらこれらの作業は完了しましたをクリックします。

ℹ️ 情報: このモードでは、コードと .env はバックアップから復元しません — コードには以前からバックドアが仕込まれているおそれがあるためです。 インシデント対応の全体手順は更新とインシデント対応をご覧ください。

他の場所で作成したバックアップを使う

以前ダウンロードした .gp247bak ファイルや、別のサーバーで作成したファイル(サーバー移行、テストサイトの構築)から復元できます。

  1. 復元画面のバックアップファイルの取り込みブロックを開きます。
  2. ファイルを作成したサイトのバックアップ用パスワードまたはリカバリーキーを入力します。
  3. ファイルを選び、アップロードして検証をクリックします。ファイルは小さく分けて送信され(初期設定では最大 2 GB)、完全に検証されます。
  4. 検証に合格すると、種類「インポート」として一覧に表示されます。他のバックアップと同じように復元します。

別のサイトで作成したバックアップは出所未確認として記録されます(このサイトの鍵で署名されていないため)。データは完全ですが、誰が作成したかを GP247 は証明できません。復元するときはこのバックアップの出所を把握しています — 復元するにチェックを入れる必要があり、そのようなバックアップの コードと .env は復元されません。外部の保存先にしかないバックアップは、外部の保存先の 手順で取り戻します。

コマンドラインからの復元

VPS 上や、サイトがブラウザーには大きすぎる場合は gp247:backup-restore を使います。実行中にバックアップ用パスワードと確認コードの入力を求められます。

作業 コマンド
プレビュー php artisan gp247:backup-restore <ID> --level=full --preview
データベース全体 php artisan gp247:backup-restore <ID> --level=full
データグループを置き換え php artisan gp247:backup-restore <ID> --level=replace --group=catalog
設定 php artisan gp247:backup-restore <ID> --level=config
削除したレコードを戻す php artisan gp247:backup-restore <ID> --level=undelete --table=<テーブル> --key=<キー>
セキュリティインシデント後 php artisan gp247:backup-restore <ID> --level=full --post-incident
.gp247bak ファイルから php artisan gp247:backup-restore --file=<パス> --level=full
元に戻す php artisan gp247:backup-restore --undo

パスワードの代わりにリカバリーキーを入力するときは --recovery-key を、出所未確認のバックアップには --accept-unverified を付けます。

条件と制約(操作の前に確認)

バックアップと範囲を選ぶとき

  • 検証済みのバックアップだけ — 壊れたり改ざんされたりしたバックアップがサイトに書き込まれることはありません。
  • データベース全体には全体バックアップが必要です — クイックスナップショットやグループ選択のバックアップには、すべてのテーブルが含まれていません。
  • サイトより新しいバックアップは復元できません — 先にサイトをバックアップのバージョンまで更新してください。新しいバックアップはテーブル構造が異なる場合があります。
  • 他のテーブルから参照されているテーブルは、グループごと復元する必要があります — 1 つのテーブルだけを置き換えると、レコード同士のつながりが壊れます。
  • 削除したレコードを戻すのは、主キーのあるテーブルで、1 回あたり 5,000 件まで — それより多い場合はデータグループを置き換えを使います。

実行中

  • 書き込みを伴う処理は同時に 1 つだけ — 別のバックアップや復元が実行中なら、終わるまで待ちます。
  • バックアップを開く鍵が使えるのは開始から 1 時間 — 長く放置した復元は最初からやり直しになります。
  • データベース全体の復元が完了できない場合、メンテナンスモードは自動で解除されます — サイトがメンテナンス画面のまま止まらないようにするためです。
  • インシデントモードや出所未確認のバックアップでは、コードと .env は復元しません — バックアップ内のコードにバックドアがあるおそれがあるためです。

よくある質問(Q&A)

Q1: 復元すると新しい注文は消えますか?

→ 置き換えたテーブルでだけ消えます。注文グループまたはデータベース全体を置き換えると、バックアップの時点以降に作成された注文は失われます。 確認の前に、失われるデータの量がプレビューに表示されます。

Q2: 商品を 1 つ誤って削除しました。サイト全体を昨日に戻す必要がありますか?

→ ありません。削除したレコードを戻すを選び、商品のテーブルとその商品を選ぶだけで、他はすべてそのままです。

Q3: データベース全体の復元中、来訪者には何が表示されますか?

→ メンテナンス画面です。復元を開始したあなたは、管理画面で進行状況を確認し続けられます。

Q4: 復元した後で、違うバックアップを選んでいたことに気づきました。

→ 24 時間以内に前回の復元を元に戻すをクリックしてください。テーブルが復元前の状態にそのまま戻ります。

Q5: インシデント後の復元で、自分までログアウトされるのはなぜですか?

→ あなたのセッションと、攻撃者が盗んだセッションを区別できないためです。全員をログアウトさせ、新しいパスワードを求めるのが確実に扉を閉める方法です。

Q6: 旧サイトのバックアップを新しいサイトに復元できますか?

→ できます。旧サイトのバックアップ用パスワードまたはリカバリーキーで .gp247bak ファイルを取り込み、出所の確認にチェックを入れてから復元します。 新しいサイトは、旧サイトと同じかそれより新しい GP247 のバージョンである必要があります。

Q7: 復元中にブラウザーが閉じてしまったらどうなりますか?

→ 復元画面を開き直すと、途中の復元が止まったところから続きます。1 時間以上放置すると復元は停止し、メンテナンスモードは自動で解除されます。 もう一度プレビューして、最初から復元してください。

Q8: コマンドラインが使えません。アップロード画像を復元するには?

→ ファイルの復元はコマンドラインのみです。ホスティング会社または開発者に、ファイルの復元のコマンドの実行を依頼してください。


📅 最終更新: 2026-11-07 · ✍️ 作成者 (Author): GP247