Notes
WordPressバックアップの取り方|
手動から復元まで
バックアップは取ることより、戻せる形で残ることが先です。ファイルとデータベースを同じ日付の組で残し、復元の前に戻す範囲を決めてください。プラグインの比較は別記事へ分け、ここでは手動の取り方と戻し方を書きます。
WordPressバックアップの対象
WordPressを戻すために必要な実体は、大きく二つです。サーバー上のファイルと、データベースの中身です。ファイルだけ残しても投稿は戻りません。データベースだけ残しても画像とテーマのカスタムは欠けます。バックアップの対象を決めるときは、この二つを同じ日付の組として扱います。片方だけ新しい組は、戻したあとに記事と画像の対応がずれます。
ファイル側で優先して残すのは、wp-content、wp-config.php、公開直下の設定ファイルです。wp-content にはアップロードした画像、テーマ、プラグイン、必須プラグイン、キャッシュ以外の設定が集まります。wp-config.php にはデータベース接続と、鍵の定数が入ります。公開直下の設定ファイルには、リライトやアクセス制限が残っていることがあります。本体の wp-admin と wp-includes は、同じ版の本体を入れ直せば揃うことが多いです。ただし本体を改変しているサイトは、改変したファイルも対象に含めます。
データベース側で残すのは、接頭辞の付いたテーブル一式です。投稿、下書き、ユーザー、設定、フォームの受信、 Woo 系の注文が入っているテーブルは、名前がサイトごとに違います。書き出すときは、テーブルを選んで抜くより、そのデータベースを一括で出す方が漏れません。容量が大きい場合でも、先に一括を取り、あとから画像テーブルだけ別途、といった分け方は復元を難しくします。
残さなくてよいものもあります。キャッシュプラグインが作った一時ファイル、サーバーのアクセスログ、同じサーバー上の別サイトのディレクトリです。これらを巻き込むとサイズだけ増え、戻すときに上書き範囲が広がります。対象を決めたら、フォルダ名とデータベース名をメモします。名前を曖昧な「全部」にしておくと、復元の日にどれが正本か分かりません。
対象の確認は、管理画面だけでは終わりません。メディアを外部ストレージへ出している、会員のファイルを別領域に置いている、フォームの添付をメール側だけに残している、といった構成では、WordPressの中を戻しても添付が欠けます。外部の保存先も、同じ日付で一覧を残します。一覧が無いと、戻したあとに「画像だけ無い」の原因切り分けが長くなります。
対象を決めたメモは、復元の日に開きます。取る日に頭の中で分かっていても、戻す日の担当が同じとは限りません。メモには、ディレクトリ名、データベース名、接頭辞、外部の保存先、残さなかったものの理由を書きます。残さなかった理由が無いと、翌月また全部を対象にしてサイズだけ増えます。サイズが増えると、圧縮の失敗も増えます。
WordPressバックアップの取り方
取り方は、手動、サーバー付属、プラグインの三つに分かれます。この記事では手動を先に固定します。手動が分かっていると、プラグインが失敗した日にも同じ対象を残せます。サーバー付属は、契約プランによって世代と保存場所が違います。付属だけに頼る場合でも、世代の数と、自分でダウンロードできるかを先に確認します。ダウンロードできない付属は、サーバー障害の日に使えません。
取るタイミングは、更新の前、大きな記事や固定ページの公開前、テーマやPHPを触る前です。取ったあとすぐ更新すると、成功した世代と失敗した世代の間隔が短く、戻す判断が速くなります。営業時間中に大きいファイルを書き出すと、サイトが遅くなることがあります。書き出しは、アクセスの少ない時間帯か、サーバーの負荷表示を見ながら行います。
保存の単位は、日付を付けた一つの束です。例として、日付、ファイルの圧縮、データベースの書き出し、メモの四点を同じフォルダへ置きます。メモには、本体の版、PHPの版、有効プラグイン、保存に使った手段を書きます。手段が分からない束は、戻すときに展開の仕方から調べ直します。圧縮の形式は、自分が解凍できるものにします。見慣れない形式で固める必要はありません。
保存先は、公開サーバーの外を一つは確保します。手元のディスク、別アカウントの保管、サーバー会社の別領域のうち、鍵を自分が持っている場所です。同じサーバーの隣のディレクトリへ置くだけでは、誤って公開ディレクトリを消したときに一緒に消えます。外へ出したあとは、サーバー側の作業用コピーを残すかどうかを決めます。残すなら、公開領域から辿れない場所へ置きます。
取り方の成功判定は、ジョブの完了表示ではありません。圧縮のサイズが前回と比べて極端に小さくないか、データベースの書き出しをテキストで開いた先頭に作成文があるか、展開して wp-content と wp-config.php が見えるか、です。ゼロバイトや、HTMLのエラー画面が保存されている失敗はよくあります。失敗した束は消さず、失敗と書いて残し、取り直します。消すと、同じ失敗を繰り返しても気づけません。
WordPressバックアップを手動で取る|ファイル
ファイルの手動バックアップは、サーバーへファイルマネージャかFTPで入り、対象フォルダを圧縮して手元へ落とす作業です。入る前に、公開URLと、サーバー上のドキュメントルートの対応を確認します。公開と違うディレクトリを固めてしまうと、戻したときに別サイトのファイルを上書きします。契約に複数サイトがある場合は、ディレクトリ名を画面で照合してから圧縮します。
圧縮の範囲は、最低でも wp-content と wp-config.php と公開直下の設定ファイルです。時間と容量に余裕があれば、ドキュメントルート一式を固めても構いません。一式を固めると、本体の改変や、直下に置いた独自ファイルも残ります。容量が大きいサイトは、uploads を別に固めると失敗しにくくなります。分ける場合は、同じ日付をファイル名に付け、片方だけ古い組を作らないようにします。
ファイルマネージャの圧縮は、タイムアウトで途中終了することがあります。途中終了の圧縮は、展開できることもあれば、途中までしか出ないこともあります。圧縮が終わったら、サイズを記録し、可能ならサーバー上で一度展開テストをするか、手元で展開して中を見ます。FTPでフォルダごとダウンロードする方法は、ファイル数が多いと抜けが起きます。抜けを減らすなら、サーバー側で圧縮してから一つのファイルを落とします。
権限の扱いに注意します。ダウンロードしたファイルを手元で解凍し、再び上げるときに、権限が自分のユーザー所有のまま変わると、Webサーバーが書けなくなることがあります。戻すときは、元の所有者と権限に寄せます。権限の数字を覚えていない場合は、取る前に代表ファイルの権限をメモします。wp-config.php は特に、公開側から読める権限へ広げないでください。
手元へ落とした圧縮は、暗号化できる場所へ置きます。wp-config.php にはデータベースの接続情報があります。共有フォルダや、送信履歴の残るチャットへ生のまま置くと、バックアップが入口になります。渡し方が必要なときは、期限付きの受け渡しにし、渡し終わったら手元の正本だけを残します。正本の場所は、運用の記録と同じメモに書きます。
WordPressバックアップを手動で取る|データベース
データベースの手動バックアップは、phpMyAdmin などの管理画面か、サーバー付属のデータベース書き出しから、SQLの書き出しを保存する作業です。入る前に、wp-config.php のデータベース名、ユーザー名、接頭辞を確認します。同じサーバーに複数のデータベースがある場合、名前が似ていることがあります。名前を画面で照合してから書き出します。
書き出しの設定は、構造とデータを両方含めます。構造だけだと中身が空です。データだけだと戻す先にテーブルが無いとき失敗します。文字コードは、元のデータベースに合わせます。多くの環境では utf8mb4 です。手元で開いて文字が化けて見えても、書き出し自体は正しいことがあります。判定は、先頭に作成の文があるか、テーブル名に接頭辞があるか、末尾までファイルが切れていないかで行います。
容量が大きいデータベースは、ブラウザの書き出しが途中で切れることがあります。切れたファイルは、末尾が途中の行で終わっています。切れた場合は、サーバー側の書き出し機能や、コマンドでの書き出しへ切り替えます。分割して出す場合は、依存するテーブルを同じ束に入れます。投稿と投稿メタを別日に出すと、戻した記事のカスタム欄が空になります。
書き出したSQLには、ユーザーのパスワードハッシュと、設定の中身が入ります。ファイルの扱いは、ファイルバックアップと同じです。公開領域へ SQL を置いたままにしないでください。書き出し用の一時ファイルがドキュメントルートに残ると、アドレスを知られるだけで中身を持っていかれます。書き出しが終わったら、公開領域に残っていないかを確認します。
接続エラーの最中にデータベースを書き出すと、不完全な状態を正本にしてしまうことがあります。管理画面が開かない日でも、サーバー側から書き出せることがあります。ただし、書き込みの途中で止まったテーブルは、書き出しも途中で終わります。障害の最中は、可能なら障害前の世代を先に確保し、新しい書き出しは「障害中」と日付を分けて残します。接続エラーの切り分けはデータベース接続確立エラーにあります。
WordPressバックアップ復元の前
復元の前に、今の状態をもう一代残します。戻したあと「戻す前の方がまだましだった」と気づくことがあるためです。今のファイルとデータベースを、失敗用の日付で残してから、古い世代を当てます。今がすでに壊れていても、壊れた状態の記録は、あとで原因を見る材料になります。残さずに戻すと、壊れた原因のファイルも消えます。
次に、戻す世代を選びます。日付が新しいほど良い、ではありません。更新の直後に壊れたなら、更新直前の世代です。数日前からおかしいなら、おかしくなる前の世代です。世代のメモに本体の版とプラグインの版が残っていると、選びやすいです。メモが無い束は、展開して wp-config.php と、データベース先頭の日付を見て判断します。選べない場合は、復元を始めず、世代の一覧作りからやり直します。
公開を止めるかどうかも、復元の前に決めます。ログイン画面が改ざんされている、決済が動いている、検索に警告が出ている、といった状態では、戻している途中の中途半端な画面を出し続けない方が被害は小さいです。メンテナンス表示や、サーバー側での一時停止が使えるかを先に確認します。止め方を知らないままファイルを上書きすると、閲覧者にはエラーと古い画面が混ざって見えます。
復元する範囲
範囲は、全体を戻すか、一部だけ戻すかです。範囲を決めずに「とりあえず画像だけ」「とりあえずデータベースだけ」と始めると、記事とファイルの日付がずれます。範囲の判断は、何が壊れているかで行います。テーマの編集を失敗しただけならテーマフォルダ、プラグイン更新で管理画面が止まったならそのプラグイン、投稿が消えたならデータベース、画像だけ無いなら uploads、です。判断できないときは全体へ寄せます。
全体
全体は、ファイルの対象一式とデータベースを、同じ日付の組で戻すことです。引っ越しの失敗、広範囲の改ざん、PHP更新のあと全体が白い、といったときに使います。全体を戻すときは、今の wp-config.php の接続先が、戻すデータベースと一致しているかを先に見ます。接続先が違うと、戻したファイルが別のデータベースを見に行き、何も変わらないように見えます。ドメインやURLを途中で変えているサイトは、データベース内のアドレスも組の一部です。古いアドレスのままだと、管理画面だけ開いて公開面が壊れます。
全体復元は時間がかかります。uploads が大きいと、上書きの途中でタイムアウトします。途中で止まった全体は、古いファイルと新しいファイルが混ざります。混ざった状態で公開を続けるより、作業用の場所で展開してから入れ替える方が安全です。入れ替えの手順を自分が持てない場合は、この段階で止めて、後ろの章の相談へ回します。
一部
一部は、壊れた場所だけを古い世代から戻すことです。テーマの style を壊した、一つのプラグインを上げて管理画面が止まった、特定の画像フォルダを消した、といった範囲がはっきりしているときに使います。一部を戻すときは、そのフォルダやテーブルが他へ依存していないかを見ます。投稿メタだけ古い世代へ戻すと、投稿本体と番号がずれます。フォームの受信テーブルだけ戻すと、設定側のフィールド定義と合いません。
一部復元のあとは、全体を戻したときと同じ確認を、範囲を狭めて行います。該当の画面、管理画面の該当メニュー、フォームや予約があればテスト送信です。一部で直らない場合は、同じ世代で全体へ広げるか、一段古い世代を試します。一部を何度も当てると、どれが残っているか分からなくなります。当てた場所と世代を、その場でメモします。
WordPressバックアップ復元の手順
手順の骨格は、今の状態を残す、公開を必要なら止める、ファイルを戻す、データベースを戻す、接続とURLを確認する、公開面と管理面を見る、記録を残す、です。ファイルとデータベースのどちらを先にするかは、範囲で決まります。全体なら、接続情報を持つ wp-config.php を含むファイルを先に置き、続けてデータベースを流し込みます。データベースだけ先に流すと、古い接続情報のファイルが新しい中身を見に行くことがあります。
ファイルを戻すときは、対象フォルダを空にしてから展開するか、上書きで入れるかを決めます。残したい独自ファイルがあるなら、先に退避します。上書きは残ったゴミファイルを消しません。改ざんのあとに上書きだけすると、余分なファイルが残ります。改ざん後は、対象を入れ替える前提で考えます。操作の詳細は改ざん記事とハッキング記事へ分け、ここではバックアップの戻しに限ります。
データベースを戻すときは、戻す先が空に近いか、上書きで流すかを確認します。同じ接頭辞のテーブルが残ったまま流すと、重複や失敗で途中終了します。流す前に、今のデータベースをもう一度書き出します。流し込みが切れたら、切れたファイルを捨て、書き出し直した今の状態からやり直します。切れたSQLを何度も流すと、テーブルの一部だけ新しい状態になります。
戻した直後は、管理画面へ入れるか、サイトヘルスが開くか、固定ページと投稿の代表、メニュー、フォームを見ます。パーマリンクの設定を一度保存し直すと、リライトが戻ることがあります。画像が欠けて見える場合は、uploads のパスと権限を見ます。管理画面だけ古い見た目の場合は、キャッシュを消します。公開面が別ドメインへ飛ぶ場合は、データベース内のアドレスが世代とずれています。ここで見慣れないSQLの置換を連続で試すと、壊れ方が増えます。一度失敗したら、残してある「今の状態」へ戻し、範囲を見直します。
手順の最後に、復元に使った世代、範囲、所要時間、残った不具合を書きます。成功しても書きます。成功の記録があると、次に同じ範囲を戻すときの手順書になります。失敗した場合は、どの段階で止めたかを残します。止めた段階が分かると、次の人は最初から全部をやり直さずに済みます。
WordPressバックアップの取り方が難しいとき
取り方が難しいと感じるのは、サーバーへ入れない、データベースの管理画面が無い、容量が大きくて圧縮が切れる、保存先の鍵が分からない、どのディレクトリが公開か分からない、といったときです。この段階で新しいバックアッププラグインを足すと、管理画面の負荷と、失敗した自動ジョブが増えることがあります。先に、自分が入れる入口を書き出します。ファイルマネージャ、FTP、データベース管理、サーバー付属のバックアップ、です。
入口が一つも無い場合は、取る作業より先に、契約と権限の所在を辿ります。制作会社だけがFTPを持っている、ドメインの契約メールが個人の退職者になっている、といった状態では、手動も自動も続きません。毎月の運用記事にあるユーザー確認と、権限の所在の記録を先に使います。入口が揃ってから、この記事の手動へ戻ります。
容量で失敗する場合は、対象を uploads とそれ以外に分け、同じ日付で残します。分けても難しい場合は、サーバー付属の世代を一度手元へ落とせるかを確認します。落とせない付属しか無いサイトは、障害の日に手元へ何もありません。落とした世代を外の保存先へ写すだけでも、取り方は前進します。
プラグインで楽にしたい場合は、取り方の対象と保存先が分かってから選びます。選び方と比較はバックアッププラグインに分けています。プラグインを先に入れると、保存先が公開領域のまま、世代が一つ、失敗通知が無い、といった設定で回り続けます。手動で一度成功した対象を、プラグインに同じ範囲でやらせると、失敗に気づきやすくなります。
WordPressバックアップを自分で難しいとき
手動の手順は分かっても、毎月残す時間がない、復元を試す場所がない、複数サイトの世代を追えない、という場合があります。自分で難しいときは、取り方の道具を増やすより、残す作業ごと渡した方が安全です。サイト当番のWordPress保守では、ファイルとデータベースを日次で別領域に残し、世代を管理します。スタンダード月額17,800円(税別)が基本枠です。
渡す前に分かるとよいのは、今の保存先、最後に成功した日付、サーバーへ入れるかどうかです。分からなくても、公開URLから見に行けます。復元が今すぐ必要な状態は、月額の話ではなく緊急です。緊急対応は税別29,800円からで、人が問題かを見てから戻しへ進みます。改ざん後の戻しは、バックアップの上書きだけでは足りないことがあります。
プラグインの選定だけ先に見たい場合は、バックアッププラグインを先に読んでから、手動で一度取る練習を残してください。練習なしで自動だけにすると、復元の日が初体験になります。初体験の復元は、営業時間中に範囲を間違えやすいです。
あわせて見る
相談
バックアップの範囲から見ます
公開URLを送っていただければ、残っている世代、ファイルとデータベースの組、戻せる保存先があるかを切り分けて返します。