スポンサーリンク

WordPress のバックアップとリストアを試す

雲海
記事内に広告が含まれています。

先日の Cocoon のライブプレビューが動作しなくなった際に、WordPress のバックアップを取る必要を強く感じました。今回の記事では、WordPress をバックアップする方法、バックアップしたデータを取得する方法、及びバックアップからのリストア(復旧)方法について説明します。

20230219 追記 : BackWPup プラグインのバックアップデータを Synology の NAS と同期する方法について記事にしました。

スポンサーリンク

WordPress のバックアップの必要性について

改めて言及する必要もないかもしれませんが、正常に動作している状態の WordPress をバックアップしておくと、後々のトラブルの際に復旧する事ができます。例えば、

  • 特定のテーマやプラグインをアップデートした際に表示が乱れた、あるいは特定のページが表示されない。
  • 間違って WordPress のフォルダを削除してしまった。データベースを削除してしまった。

レンタルサーバにバックアップの機能があり使用している場合でも、バックアップを実施した以降のデータは復旧できません。ですので、レンタルサーバのバックアップとは別に WordPress 側でもバックアップしておけば、トラブルの際の被害を最小限に抑える事が出来ます。

WordPress には二種類のデータがあります。

  • サーバ上に保管してあるファイル … WordPress 本体のプログラムや各種設定ファイル
  • データベース (MySQL) に保管してあるデータ … 記事やプラグインの設定データ

sftp や scp でサーバー上に保管されているファイルをコピーしただけでは、WordPress で作成した記事等はバックアップされません。データベースのデータもエクスポートすれば取得できますが、それぞれの作業を個別に行うのは手間がかかりますし、面倒な作業はやらなくなってしまい「必要な時にバックアップがない!」という状況になってしまいます。

WordPress のプラグインによるバックアップは簡単に設定できますので、最小限の環境が整った段階で設定しておくと良いかと思います。

スポンサーリンク

BackWPup プラグインについて

BackWPup – WordPress Backup Plugin
WordPress の完全自動バックアップを予約します。保存するコンテンツ (Dropbox、S3など) を指定できます。これは無料版です

WordPress の backWPup プラグインは、ファイルとデータベースの二種類のデータ全てを同時にバックアップすると共に、以下のような機能があります。

  • 自動 (定期実行)、手動によるバックアップ
  • バックアップ対象範囲、除外範囲の設定
  • バックアップ世代 (何回前までのバックアップデータを残すか)
  • バックアップデータは、サーバ内の特定フォルダ内に保存する他、Dropbox や FTP サーバに保管する事も可能 (OneDrive 等、他のクラウドに保存するのは有料の Pro 版で可能)

他にも WordPress のバックアップ用のプラグインの情報も見つかりますが、私が実際に使ってみると BackWPup プラグインの機能で十分でした。

事前準備

今回は LOLIPOP! レンタルサーバにインストールした WordPress のバックアップとリストアの作業になります。他のレンタルサーバにも同様の機能があると思いますので、適宜読み替えて下さい。また、以下の画面やソフトウェアは Windows11 の例となりますので、Mac 等の他の OS の場合は適用できませんのでご了承ください。

スポンサーリンク

事前に ssh と WinSCP 等の FTPS/scp を使えるようにしておくと作業が捗ります。ssh や scp、WinSCP や FFFTP の操作に慣れている方は、この章を飛ばして下さい。

ssh 有効化とログインの確認

LOLIPOP! のユーザー専用ページで ssh を有効にします。サーバーの管理・設定の中のSSHを選択します。下図は既に有効にした状態です。SSHパスワードは非表示になっていますが「表示」ボタンを押すとパスワードが表示されます。

LOLIPOP! のユーザー専用ページ、SSH の設定画面

Windows11 でも ssh は使用できます。パスワード認証の場合は、

  • サーバー : ssh.lolipop.jp
  • アカウント : username
  • 接続ポート : 2222

として、ターミナル等から以下のように入力します。(パスワードはコピペできます)

C:\Users\hiro>ssh username@ssh.lolipop.jp -p2222
username@ssh.lolipop.jp's password: (ここにパスワードを入れる。画面表示されない)
client_global_hostkeys_private_confirm: server gave bad signature for RSA key 0
[username@aaannn ~]$
[username@aaannn ~]$ exit
ログアウト
Connection to ssh.lolipop.jp closed.

$マークのプロンプトが出たらログイン成功です。exit で終了します。

bash のプロンプトですので、制限はありますが各種コマンドを実行する事が出来ます。使用できるコマンドの一覧は以下のページに記載されています。

SSHの設定方法 - ロリポップ!レンタルサーバー
ロリポップ!レンタルサーバーのご利用マニュアル SSHについて説明したマニュアルページです。

エディタは vim 位しか入っていないので、もし vim が使えない方はローカルにファイルを転送してから編集して戻した方が簡単かと思います。単一のファイルなら scp コマンドでも転送できます。

WinSCP の接続確認

LOLIPOP! では、ファイルの送受信に FTP over SSL (FTPS) か SCP を使用できます。FTPS で接続する場合は、下記説明中にも記載がありますが、サーバーやパスワードが変わりますのでご注意ください。

FFFTP FTPS対応版の設定方法 - ロリポップ!レンタルサーバー
ロリポップ!レンタルサーバーのご利用マニュアル FTPソフト(Windows FFFTP FTPS対応版)の設定を説明したマニュアルページです。
WinSCPのSSH設定方法(Windows) - ロリポップ!レンタルサーバー
ロリポップ!レンタルサーバーのご利用マニュアル WinSCPのSSH設定について説明したマニュアルページです。

個人的に、FTPS よりも SCP 派なので、WinSCP を使用しました。上記リンク先には WinSCP の LOLIPOP! 向けの設定マニュアルがありますが古いバージョン(4.3.1)のようなので、最新の WinSCP (5.21.6) の画面で接続方法を説明します。

https://ja.osdn.net/projects/winscp/
窓の杜
「WinSCP」SCP/SFTP/FTPS対応のFTPクライアント

Microsoft Store からインストールすると有償ですが、上記サイトからダウンロードした場合は無償 (寄付歓迎) です。私は winget でインストールしました。

起動時には、サイトを選択する画面が表示されます。初回起動時はサイトが何も保存されていないので、LOLIPOP! のサイトを登録します。パスワードは登録しない方が良いです。

WinSCP : サイト登録画面

「保存」を選択すると、セッション名の入力画面が表示されますので、適宜入力します。

WinSCP : セッションの保存名

新しく登録されたサイト名 (セッションの保存名) を選択して「ログイン」を選ぶと、パスワードの入力画面が表示されますので、ssh の時と同様に LOLIPOP! の SSHパスワードを入力します (コピペできます)。

WinSCP : パスワード入力画面

ログインに成功すると、下の画面になります。

WinSCP : ログイン後

左側がローカル (自分のPC) のドライブ情報、右側がリモート (LOLIPOP!) のレンタルサーバーのドライブ情報になります。

リモート側の上部のアイコンを抜き出したのが下の図です。ローカル側も殆ど同じ配置です。

上段の左側より

  • 現在のディレクトリ名
  • お気に入りのディレクトリの登録と移動
  • ファイル名で絞り込むフィルタ
  • 一つ上のディレクトリに移動
  • 一番上のディレクトリに移動
  • ホームディレクトリへ移動
  • ディレクトリに含まれるファイル、ディレクトリの更新
  • ファイルの検索
  • ディレクトリのツリー表示
  • 戻る (直前の移動操作を戻す)
  • 進む (戻した移動操作を進ませる)

下段の左側より

  • 選択したファイル、フォルダをダウンロード
  • 選択したファイルを編集 (ローカルにダウンロードして編集後にアップロードする)
  • 削除
  • 名前の変更
  • プロパティの変更 (パーミッションや所有者を変更できる)
  • ディレクトリ、ファイル、リンク (ショートカットのようなもの) を作成
  • 複数選択 ワイルドカードで条件指定
  • 複数選択の解除 ワイルドカードで条件指定
  • 複数選択の解除

普段 Windows のエクスプローラを使用している方であれば、下の画面で複数選択してコピー & ペーストもできますし、右クリックメニューもありますので、直感的に操作できるかと思います。

BackWPup ファイルのローカル (PC) へのコピーの他、.htaccess をどうしても編集しなければならない時等に重宝します。

BackWPup プラグインのバックアップ設定について

インストール

WordPress のメニューのプラグインから新規追加を選択し、BackWPup プラグインを検索で探します。

BackWPup プラグイン

「今すぐインストール」「有効化」を実行すると、WordPressメニューにBackWPup の項目が追加されます。

WordPress メニューに BackWPup が追加

「新規ジョブを追加」を選択し、新しいバックアップのジョブを作成します。

新規バックアップジョブの作成

新規ジョブの設定項目は色々ありますが、殆どはデフォルトの内容で大丈夫です。実際に変更・確認しなければならない箇所のみ記載します。

一般

まず「ジョブの名前」を変更します。例えば "Daily Backup"、"Weekly Backup" 等でも良いでしょう。

BackWPup : 一般 ジョブ名とジョブタスク

このジョブは…で選択する項目は、上図の通り3つでOKです。データベースとファイルのバックアップを分けたい場合には、別々のジョブを作成して下さい。

アーカイブ名は、特に拘りがなければそのままで。

BackWPup : 一般 アーカイブ形式とバックアップファイルの保存方法

アーカイブ形式は、Windows メインの方は Zip が扱いやすいかと思います。Linux (WSL2含む) の環境が使える方は Tar GZip (….tar.gz) でしょう。

バックアップファイルの保存方法は「フォルダーへバックアップ」を選ぶと、WordPress の入っているフォルダ以下の決まったフォルダ内にバックアップファイルが保存されます。

他にメールや FTP、Dropbox 等々の選択肢はありますが、最も簡単なのはフォルダーへバックアップかと思います。

ここより下は変更の必要はありません。最後に「変更を保存」のボタンを押して保存して下さい。

スケジュール

バックアップのスケジュールを設定します。

BackWPup : スケジュール

ジョブの開始方法は「WordPress の cron」一択です。

スケジューラの種類は「基本」、スケジューラで毎月/毎週/毎日/毎時でタイミングを右側で指定します。私は「毎日」「03:00」としましたが、更新頻度によって調整して下さい。

最後に「変更を保存」のボタンを押して保存して下さい。

DB バックアップ

BackWPup : DB バックアップ

バックアップするテーブルは全てが選択されていればOKです。

バックアップファイル名は変更しなくても良いですが、好みに応じて変更してください。

バックアップファイルの圧縮は GZip を選択してください。記事の量によっては大きなサイズになる事と、リストアの際に phpMyAdmin に読み込ませる際に GZip 圧縮のままでも読み込める為です。

最後に「変更を保存」のボタンを押して保存して下さい。

ファイル、プラグイン

変更なしでOKです。プラグイン一覧のファイル名や圧縮するかどうかは、お好みで変更して下さい。

変更した場合は「変更を保存」のボタンを押して保存して下さい。

宛先: フォルダ

BackWPup : 宛先フォルダー

バックアップを格納するフォルダーは変更する必要はありませんが、場所は覚えておいて下さい。

ファイルを削除は、何世代のバックアップを残しておくかの指定です。数を多くし過ぎるとレンタルサーバの容量を多く使用しますので、せいぜい30程度でしょうか。

現在の私の環境では、バックアップ1ファイルが約45MBですので、30世代だと約1.3GBになります。LOLIPOP! のハイスピードプランは最大400GBの容量ですので問題になりませんが、記事数や画像が多くなった場合には注意が必要です。

バックアップファイルを別の場所にコピーして多重バックアップの環境を作れば、少なくてもかまわないと思います。

変更した場合は「変更を保存」のボタンを押して保存して下さい。

BackWPup プラグインのバックアップの手動実行と自動実行

ここまで設定すれば、WordPress メニューの BackWPup プラグインのジョブの中に、設定したジョブが追加されています。

BackWPup : ジョブ作成後

マウスカーソルを合わせると「今すぐ実行」が表示されますので、クリックすると手動でバックアップが実行されます。下図が実際に手動バックアップを実行した画面です。

BackWPup : バックアップ実行時

記事数が少ないので6秒で完了しています。WinSCP でバックアップのフォルダを確認すると、日付-時刻-HASH値.tar.gz のファイルが新規に作成されていました。

後は、指定した時間にバックアップファイルが新規に作成されている事を確認し、プラグインやテーマのアップデートをする前に手動でバックアップを実行する事を繰り返す事で、トラブルの可能性のある直前の状態をバックアップファイルで残すことが出来るようになります。

ここまでで、手動・自動でバックアップファイルが作成される状態を作る事が出来ました。

BackWPup プラグインのバックアップデータからのリストアについて

バックアップファイルが手動・自動で作られるようになったら、トラブル発生時にリストアする手段を確認する必要があります。リストアの方法が分からないと、バックアップを取っていても使えない状態ですので、あまり意味がありません。

BackWPup のバックアップファイルからのリストアは、プラグインから自動で行うことはできません。とはいえ、手順はそれほど難しい内容ではありませんので、一つずつ実行すれば確実にリストアし WordPress のデータを復旧させることができます。

手順としては、大きく二つに分かれます。

  • ファイルのリストア
  • データベースのリストア

一つずつ説明します。

ファイルのリストア

ローカル (PC) に保管しているバックアップファイルを展開する

バックアップファイルは Zip 形式か tar.gz 形式で圧縮された物を作成していると思いますので、適当なディレクトリ内でバックアップファイルを展開します。

展開したファイルの中の4つのファイルを親フォルダに移動する

展開したフォルダに含まれる下記のファイルは、WordPress に必要なファイルではありませんので、親ディレクトリへ移動します。

  • backwpup_readme.txt
  • ***.sql.gz、又は ***.sql
  • manifest.json
  • ***.pluginlist.***.txt.gz、又は ***.pluginlist.***.txt

これらのうち、***.sql.gz 又は ***.sql は、後でデータベースのリストアに使用するファイルです。

残りのフォルダとファイルをリモートの WordPress のフォルダに上書きコピーする

WinSCP 等でフォルダを合わせて、ローカル側のフォルダとファイルを全て選択し、リモート側にコピーします。

bash の扱いに慣れている方は

コマンドで実行した方が簡単です。

ssh でレンタルサーバに入って、適当なディレクトリにバックアップファイルを tar で展開して、cp -pr で上書きコピーすれば OK です。

二つのバックアップファイルから上書きコピーする手順を簡単に検証してみました。新しいバックアップが現在の WordPress のデータ、古いバックアップが元に戻したい WordPress のデータをイメージしています。

# レンタルサーバー上の bash で実行

$ mkdir tmpdir
$ cd tmpdir

# バックアップファイルを準備

$ cp backup_dir/2023-MM-D1_HH-MM-SS_nnn.tar.gz .
$ cp backup_dir/2023-MM-D2_HH-MM-SS_nnn.tar.gz .

# 古いバックアップを展開

$ mkdir wordpress.old
$ mkdir mvfile.old
$ cd wordpress.old
$ tar zxf ../2023-MM-D1_HH-MM-SS_nnn.tar.gz
$ cd ..

# WordPress 実行には不要なファイルを退避

$ mv wordpress.old/manifest.json mvfile.old/
$ mv wordpress.old/*sql* mvfile.old/
$ mv wordpress.old/backwpup_readme.txt mvfile.old/
$ mv wordpress.old/*pluginlist* mvfile.old/

# 新しいバックアップを展開 運用中の WordPress に上書きするなら不要
# ここから
$ mkdir wordpress.new
$ mkdir mvfile.new
$ cd ../wordpress.new/
$ tar zxf ../2023-MM-D2_HH-MM-SS_nnn.tar.gz
$ cd ..
$ mv wordpress.new/manifest.json mvfile.new/
$ mv wordpress.new/*sql* mvfile.new/
$ mv wordpress.new/backwpup_readme.txt mvfile.new/
$ mv wordpress.new/*pluginlist* mvfile.new/
# ここまで

# 古いバックアップから新しいバックアップへ上書きコピー
$ cp -pfRT wordpress.old wordpress.new

後で使うので ***.sql.gz 又は ***.sql はローカルにコピーしておく必要があります。

WinSCP と同じ手順となるように書きましたが、実際には親ディレクトリの名前を変更して、新しく同名のディレクトリを作って、バックアップファイルを展開すれば良さそうな気もします。機会があればテスト環境を作ってやってみます。

データベースのリストア

ファイルのリストアが終了したら、次はデータベースのリストアです。

***.sql.gz 又は ***.sql の準備

バックアップファイルを展開したフォルダに入っていた ***.sql.gz 又は ***.sql を準備します。

phpMyAdmin を開く

LOLIPOP! の場合は、ユーザー専用ページ内のデータベースの箇所に phpMyAdmin を開く箇所があります。

LOLIPOP! データベース 操作する

右側の「操作する」ボタンを押します。

LOLIPOP! データベース phpMyAdmin を開く

「phpMyAdmin を開く」ボタンを押すと、別ウィンドウ又は別タブで phpMyAdmin が開きます。

phpMyAdmin ログイン画面

phpMyAdmin のログイン画面が表示されるので、前のページに記載されているユーザー名とパスワード、サーバーを選択し実行を押すと、phpMyAdmin の初期画面が表示されます。

phpMyAdmin に ***.sql.gz 又は ***.sql をインポートする

phpMyAdmin の初期画面

phpMyAdmin の初期画面が表示されたら、

  • 左側の赤枠で囲ったデータベース名をクリック
  • インポートをクリック

の順に操作して、インポート画面を表示させます。特に左側のデータベース名をクリックしていないとエラーで進めません (私もクリック忘れて進めませんでした)。

phpMyAdmin : インポート画面

「ファイルを選択」ボタンから ***.sql.gz 又は ***.sql を選択し、他のオプションはそのままで「実行」ボタンを押すとインポートは終了です。

上限が512MiBですので、余程のことが無ければ容量制限に引っ掛かる事は無いでしょう。

これでデータベースのリストアは完了です。

WordPress の動作確認

リストア作業が終了したら、WordPressの動作を確認します。

  • トップページが表示できるか、管理画面にログインできるか
  • テーマやプラグインは元の状態か
  • テーマやプラグインの設定は変わっていないか
  • トップページ以外にも表示の乱れやエラーはないか

私の場合は不具合が発生している状況でバックアップファイルを作成し、そのデータで復旧しましたので、不具合もそのまま発生していました。

ただ、バックアップからの復旧が出来る事が確認できましたので、更に大胆に種々の調整が出来た事が不具合の解決に繋がったと考えています。

更にデータ消失のリスクを下げる為には

ちなみに、WordPress以外の自宅のデータについては、私は Synology DS218+ という NAS (Network Attached Storage) に全てのデータをバックアップしています。

PC (Windows11) については Active Backup for Business、スマホの写真は DS Photo で同期させるようにしており、PC で作成したデータは NAS のフォルダに保存しています。また、Google Drive や Dropbox については、Synology Drive を経由させる事で PC <-> NAS <-> Cloud <-> スマホの間で常に同期させるようにしています。

Synology DS218+ のデータは、外付 HDD + OneDrive に同期させる事で多重バックアップの環境を作りました。

この先、WordPress のバックアップデータも Synology DS218+ に取り込み、多重バックアップさせる事でデータ消失のリスクを更に下げようと考えています。

20230219 追記 : BackWPup プラグインのバックアップデータを Synology の NAS と同期する方法について記事にしました。

まとめ

WordPress の BackWPup プラグインを使用して、

  • WordPress のバックアップ
  • バックアップデータからのリストア

を試してみました。問題なくリストアし、WordPress のサイトを復旧させる事が出来ました。

今回は不具合の解消の為に、大きく設定を変える前の状態を維持したく BackWPup プラグインを導入しましたが、本来は初期設定が済んだ状態で行うべきかと思っています。

それでも、今回の試行錯誤により BackWPup プラグインによるバックアップの有用性を確認する事が出来ました。この先、Synology DS218+ とも連携し、データ消失のリスクを下げられるようにしたいと考えています。

Synology 2ベイNASキットDiskStation DS220+
Synology
¥45,869(2024/12/06 17:24時点)
Synology の NAS は Intel CPU を使用しているプラスがおすすめです

私が使用しているのは2世代前の DS218+ です。HDD は容量不足により 4TB -> 8TB に更新しましたが、トラブルなく使用しています。メモリを増設したので、もう少し活用したい所。(2023/02/12 追記 : WP Associate Post R2 から Cocoon ショートコードへ移行しました)

Synology DS218+ に内蔵している HDD は Seagate IronWolf 8TB です。外付 USB HDD 含め3台を使用しています。本当なら Western Digital Red と分けたかったのですが、購入時に品切れで IronWolf のみになりました。特に問題なく連続稼働しています。(2023/02/12 追記 : WP Associate Post R2 から Cocoon ショートコードへ移行しました)

今回のアイキャッチ画像

Gerd AltmannによるPixabayからの画像です。復活をイメージした雲海です。

コメント

タイトルとURLをコピーしました