情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

BackWPup3でWordPressブログを丸ごとバックアップする方法(復元手順テスト済み・Q&A付き)

BackWPup (6) WordPress (76) WordPressプラグイン (25) バックアップ (10)

データベース+ファイルシステムを丸ごと定期バックアップできるBackWPupの最新版BackWPup 3が公開されました。

旧バージョンから大幅に変更されている点もあるため、インストールから復元作業までの手順を総点検したので、共有します。

「復元手順テスト済み」なのはあくまで【私】です。この機会に皆さんも是非、自分で「復元手順テスト済み」に仲間入りしてみてください。

合い言葉は、

復元手順の確認までがバックアップ!

です(言い過ぎ)。リストア作業の確認は面倒だよーという人も、WordPressのデータが消えたら困る!という人で、まだバックアップをやってない!という人は、この記事を参考にBackWPupの設定を実践してみてください

目次

BackWPupの長所

BackWPupの長所は以前「今こそ安心できるWordPressバックアップを!復旧作業まで実際にやってみたWordPress丸ごとバックアップ法」で詳しく紹介しましたが、改めて簡単に紹介すると、

  • 1.「データベース」と「ファイルシステム:の両方を丸ごとバックアップ可能
  • 2.定期自動バックアップが設定可能
  • 3.Dropboxなど、多彩なバックアップ先

このあたりがポイントです。

データベースだけバックアップするプラグインが人気だったりするのですが、ファイルシステムも一緒にバックアップしてくれるほうが何かと便利ですし、そもそもデータベースだけでは設定や画像など、さっぱり復元できません。いざというときに備えて、これを機会にBackWPupでバックアップの設定を作ってみましょう

BackWPup3での変更点

別掲記事にまとめます。とりあえず、アップデートではんく再インストールがおすすめです。

有料版も公開されましたが、引き続き無料版も利用可能です。

今回の実験環境紹介

今回は、さくらのレンタルサーバで運用しているWordPressのサイト(このブログ)をバックアップして、別のさくらのレンタルサーバへ復元しました。

準備

BackWPup3では、PHP 5.2.6以上が要求されます。今回、バックアップするさくらのレンタルサーバの標準PHPバージョンが5.2.17だったので、PHP 5.3.21へ変更しました(サーバコントロールパネル>PHPのバージョン選択)。

バックアップの流れ

バックアップの大まかな流れは以下の通りです。

  • 1.BackWPupのインストール
  • 2.定期バックアップの設定
  • 3.手動バックアップによるバックアップテスト

【バックアップ】 1.BackWPupのインストール

今回は、BackWPup 3.0.6をインストールしました(現在3.0.8が最新版ですが、3.0.8および3.0.7は、Dropboxの認証に問題がありました)

最新版のインストールは、「プラグイン>新規追加」から「BackWPup」でプラグインを検索して、「いますぐインストール」→「はい」→「プラグインを有効化」と進めるだけです。今回は、BackWPup 3.0.6 をインストールしました。

古いバージョンをインストールしたい場合は、BackWPup>Developersの「Other Versions」のバージョン番号をクリックして、backwpup.3.0.xをダウンロードします。そして、WordPressの「プラグイン>新規追加」で「アップロード」を選択して、「ファイルを選択」から先ほどダウンロードした.zipファイルを選択して、「いますぐインストール」→「プラグインを有効化」の順にクリックして、インストール完了です(ここで「アップロードしたファイルは php.ini で定義された upload_max_filesize を超過しています。」と表示される場合は、php.iniに「upload_max_filesize = 10M」と追加してください)

【バックアップ】 2.定期バックアップの設定

続いて、定期自動バックアップの設定をします。

設定画面(BackWPup Dashboard)を開く

メニューに「BackWPup」という項目が追加されているはずなので、そこをクリックして設定画面を開きます。

そして、「Welcome to BackWPup」という最初のページの一番下にある「Backup now!」というボタンから設定画面を開きます。

インストールが成功したかの確認

DashBoardの「First Steps」にある「Check the installation」をクリックします。

私の場合、特にエラーは表示されず、サーバの環境や設定の一覧が表示されました。

特に問題がなさそうなら、もう一度メニューの「BackWPup>Dashboard」からDashboardに戻ります

Jobを作成する

定期バックアップは、複数種類設定できます。その一つ一つは「Job」と呼ばれます。今回は、ひとつ新しいJobを作成します。

まず、「First Steps>Create a Job」をクリックしてください。

Jobの設定(1):Generalタブ

まず、「Generalタブ」で、各種設定をします。画像の通り設定してください。

設定が完了したら「Save changes」を押しておきましょう。

Jobの設定(2):Scheduleタブ

次に、「Schedule」タブで、自動定期実行の予定を設定します。今回は、「毎日深夜3:45」に設定してみたいと思います。

まず、「Start job」で、「with WordPress cron」を選択してください(備考:wordpress cronとは、ブログへのアクセスをきっかけに動き出したPHPのついでに定期実行を起動する、みたいな設定です。時刻を過ぎてから最初のアクセスがあるまでは実行されません、たしか。)

すると、「Schedule execution time」という設定項目が展開されるので、「basic」「daily 3 45」のように設定して次の画像のようにします。

設定が完了したら「Save changes」をクリックします。

Jobの設定(3):DB Backupタブ

次は、「DB Backup」タブを開きます。すべてのテーブルにチェックが入っているかの確認だけをして、特に変更はしません(備考:Activate maintenance mode on database dumpは有効でもいいかもしれません)。

Jobの設定(4):Filesタブ

次の「Files」タブでは、「Backup plugins」にチェックを入れてください

その他は変更する必要が無いのでそのまま「Save changes」で設定を保存します。「Backup wp-config.php, robots.txt, .htaccess, .htpasswd and favicon.ico from root」もONにしておきます。

Jobの設定(5):Pluginsタブ

次の「Plugins」タブは、変更する必要が無いので、そのままにしておきます。

Jobの設定(6):To:Dropboxタブ

最後の「To:Dropboxタブ」で、Dropboxに関する設定をします。他のバックアップ先を選択した場合や、バックアップ先を複数選択した場合は、それら一つ一つについて設定してください。ここでは、Dropboxについてのみ紹介します。

まず、あらかじめDropboxにWebブラウザからログインしておきます

その状態で、「Reauthenticate (full Dropbox)」をクリックします。

すると、Dropboxへの接続承認ページが開くので、「許可」をクリックします。これでBackWPupからDropboxに接続できるようになります。

認証に成功すると、次のように「Authenticated!」と表示されるます。あとは、「Folder in Dropbox」と「File Deletion」を入力するだけです。

「Folder in Dropbox」には、Dropboxのどこにバックアップファイルを保存するかを、「File Deletion」には、「Number of files to keep in folder.」とあるように、最新の何件までのバックアップを保持しておくかを入力します。「5」と設定した場合、6つめのバックアップを行うと、一番古いバックアップファイルが削除され、常にバックアップファイルの数が「5」になるように管理されます。

以上で設定完了です

【バックアップ】 3.バックアップの実行テスト

実際に設定通りバックアップされるか、手動実行で確認してみます。

BackWPup>Jobs」を開いて、「Run now」をクリックします。

すると、実行状況がグラフを使って見やすく表示されます。

また、「Display working log」をクリックすると、従来のようなログ表示も可能です。

データベースとファイルシステム全体のバックアップ完了まではそれなりに時間がかかるので、しばらく待ちます

バックアップが完了すると、「Job end」と表示されます。今回はJob全体で10分程度かかりました。

同時に、DropboxがインストールされているPCでは、同期(ダウンロード)が始まるはずです。これでテストバックアップは終了です。

【リストア編】 実際にやってみよう!

ある意味ここからが本題です

BackWPup2の記事の時と同様に、今回も、レンタルサーバ上のデータ・環境がすべて吹き飛んだと想定します。ただ、今回は別のサーバ環境、とまではいかず、同じさくらのレンタルサーバ上で復元してみます。

【リストア編】 流れ

次の順に説明します。

  • 1.リストア先の環境構築
  • 2.バックアップファイルの解凍・確認
  • 3.リストア先へのファイルアップロード
  • 4.データベースの復元
  • 5.wp-config.phpの編集
  • 6.リストア後のWordPressの動作確認

【リストア編】 1.リストア先の環境構築

リストア先で、できるだけ環境を再現します。多少違っても問題なく動きますし、問題が発生し次第対応するので、「できるだけ」でいいと思います。

ここでわかる大切なことは、ApacheやPHP、MySQLなどのバージョンや設定内容、インストール済みのモジュールなどの情報を事前に記録しておくこと、です。

※さくらのレンタルサーバの場合メモ

  • PHPのバージョンを設定する
  • データベースを作成する

【リストア編】 2.バックアップファイルの解凍・確認

Dropboxによって手元にダウンロードされたバックアップファイル(.zip)を解凍します。

すると、「バックアップしたファイルシステム」の中に、「データベースのバックアップファイル(.sql)」と「プラグインの一覧(.txt)」が、バックアップ時に設定したファイル名で保存されているはずです。

【リストア編】 3.リストア先へのファイルアップロード

中身が揃っていることが確認できたら、「.zipを解凍後にアップロード」もしくは、「.zipをアップロードしてから解凍(おすすめ)」を行って、サーバ上の適切なディレクトリにWordPress本体を含めた丸ごとを設置してくださいパーミッションについて気になる人はこちら)。

【リストア編】 4.データベースの復元

次に、データベースを復元します。「.sql」ファイルがバックアップされているので、これをデータベース(MySQL)にインポートしてあげればOKです。

まず、空のデータベースを作成します。このとき、MySQLのホスト名(さくらの場合はmysql999.db.sakura.ne.jp)と、ユーザ名、パスワード、データベース名を控えておいてください。

(※さくらのレンタルサーバの場合は、「データベースの設定>データベースの新規作成」から、データベースを新規作成します。「データベース名」と「接続用パスワード」を入力し、「データベース文字コード」では「EUC-JP(ujis)」でなく「UTF-8」を選択して、「データベースを作成する」をクリックします。)

次に、管理ツールなどから、.sqlファイルをインポートします。

(※さくらのレンタルサーバの場合は、管理ツール(phpMyAdmin)にログインして、先ほど作成したデータベースを選択します。そして、「インポート」タブを開いて、「ファイルを選択」から、ローカルに保存されている.sqlファイルを指定して、「実行する」よりインポートします(インポートに失敗する場合や、コマンドラインでのインポートについては末尾のQ&A参照)。

(※もし、ブログのURLを変更するのなら、.sqlファイルの中のURLをツールを使って置換してしまうとよいのかもしれません。WordPressの引っ越し・移行についての公式情報はこちら。)

【リストア編】 5.wp-config.phpの編集

次に、WordPressが、どのデータベースを参照するか、という設定を編集します。

ここで、MySQLが次の環境だったとします。

  • ホスト名:mysql999.db.sakura.ne.jp
  • WordPress用のデータベース名:wordpress_database_name
  • MySQLのログインユーザ名:mysql_user_name
  • MySQLのログインパスワード:mysql_user_password
  • データベースの文字コード:UTF-8
  • この内容を、wordpressのインストールディレクトリにあるwp-config.phpに記述します(すでに書かれているので、変更のあった箇所だけ変更すればOKです。ローカルで編集してから、サーバへアップロードするほうが楽かもしれません。それでもOKです。)

    // ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
    /** WordPress のためのデータベース名 */
    define('WP_CACHE', true); //Added by WP-Cache Manager
    define('DB_NAME', 'wordpress_database_name');
    
    /** MySQL データベースのユーザー名 */
    define('DB_USER', 'mysql_user_name');
    
    /** MySQL データベースのパスワード */
    define('DB_PASSWORD', 'mysql_user_password');
    
    /** MySQL のホスト名 */
    define('DB_HOST', 'mysql999.db.sakura.ne.jp');
    
    /** データベースのテーブルを作成する際のデータベースのキャラクターセット */
    define('DB_CHARSET', 'utf8');
    
    /** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
    define('DB_COLLATE', '');

【リストア編】 6.リストア後のWordPressの動作確認

これで、WordPressがデータベースと連携できるようになりました。さっそく、wordpressがインストールされたディレクトリにアクセスしてみます。

上手く表示できない場合は、記事末尾の「リストア後の挙動がおかしい場合」がヒントになるかと思うので、参照してください(さくらのレンタルサーバで自分が躓いたポイントメモ)。

【リストア編】 リストア成功

無事、リストアに成功すると、無事、ブログを表示することができます。

めでたしめでたしです。

【リストア編】 本当はDNSの設定も!

本当は、DNSの設定もすべきですが、それを試すとこのブログが表示されなくなってしまうと言うか、本当に移行してしまうので、今回はパスしています。

参考:さくらのレンタルサーバ上のWordPressに独自ドメインからアクセスできるようにするための設定メモ

わかったこと

  • BackWPupを使っておけば、ファイルもデータベースも丸ごとバックアップできる+ちゃんと復元できる
  • 実際に障害が起こる前から、必要な情報を書き出しておくと圧倒的に捗る
  • 復元はどうしても復元先の環境に依存する面があって難しい!事前練習+マニュアル化がおすすめ!

「うわあああああああサーバ飛んだああああああああああああ」なんて叫ばないで済むように、日頃からバックアップ&リストア練習を心がけてください、というか、せっかくなので今すぐやるのがおすすめです。

付録:Q&A

よくありそうな質問を紹介します。

Dropboxの認証ができない

何度Dropboxの認証を試みても失敗する場合があります。その場合、BackWPupの特定バージョンにおけるバグが原因かもしれません。BackWPup 3.0.8および3.0.7は、認証周りにバグを抱えているようです。今後、3.0.9以降で修正されるかと思いますが、とりあえずは過去バージョンの3.0.4や3.0.6なら上手くいくので、そちらを利用してください。

Dropboxの認証を削除したい

WebブラウザからDropboxにログインして、右上の名前をクリックして設定画面を表示して、「マイアプリ」から、「BackWPup」という項目を削除(アンインストール)してください(参考画像)。

一部の設定項目が表示されない

バックアップ手段などにより、必要なPHPの拡張モジュールがあったりします。例えば、Dropboxでは、curlが必要です。もし、curlが利用できない場合は、curlが必要な項目は設定に表示されないそうです。機能によって、FRT,gz,bz2,ZipArchiveも必要になります。また、mysqliは必須となっています。

また、機能によってはPHP 5.3.2以上が必要、という場合もあるので、詳しくは公式ページのDescriptionで確認してみてください。

phpMyAdminでのインポートに失敗する

インポート時に「413 Request Entity Too Large」というエラーが表示された場合は、.sqlファイルが大きすぎるのが原因だと思われます。.sqlを圧縮する方法もありますが、sshでサーバにログインして、mysqlコマンドから直接.sqlをインポートした方が楽かもしれません。.sqlファイルが「~/www/wp/backup.sql」として保存されているとしたら、次のようにすればインポートできるはずです(自分はこれでインポートしました)。

%mysql -u mysql_user_name -h mysql999.db.sakura.ne.jp -p
mysql>use wordpress_database_name
mysql>source ~/www/wp/backup.sql

これなら、数ギガバイト以上の巨大ファイルでも、インポートできるはずです。

リストア後の挙動がおかしい場合

リストア後、ブログが表示できない、ログインできない、404になる場合などについて参考になりそうなヒントを紹介します。

大きな注意点

完全にDNSの情報まで移行しないと、いろいろと不整合が起こります。WordPress本体やデータベースにもバックアップ時のURLが記録されていますし、レンタルサーバの設定にも気を付ける必要があります。「同じブログに別のURLでアクセスするんだ」ということを超意識して作業するとよいとおもいます。

マルチドメイン設定問題の回避

さくらのレンタルサーバのマルチドメイン設定ででwww以下の特定のフォルダ(例えばwww/wp/)をルートとして表示するようにしていた場合、username.sakura.ne.jp/でwww/の内容を表示するのではなく、www/wp/の内容を表示するようにしないと、いろいろなファイルが1階層ずれて、指定したディレクトリに存在しないことになってしまいます。そこで、設定を変更すれば良いのですが、初期ドメインではコレができません。そのため、ドメイン追加でさくらのサブドメイン(username.sakuratan.comなど)を作成し、そのURLについて、ドメイン詳細設定から、マルチドメインの対象フォルダとしてwww/wpを指定すればOKです。

siteurlを直接編集する方法

DNSなどのネットワークの設定まではしていないため(やったらまずい)、ログイン時に、リストア先のサーバから、バックアップしたサーバへ転送されてしまうことがあります。このような場合、hostsファイルを編集して強引にドメインとIPアドレスのペアを変更する方法もあるようなのですが、それでも上手くログインできない/むしろ表示できなくなってしまうので、WordPressのブログURLの設定を変更します。ただ、ログインできないので、phpMyAdminで、wp_optionsテーブルを直接編集します。編集箇所は、「siteurl」と「home」です。これで、WordPressが、自分のURLの認識を変更してくれます(もちろん、実際に運用する段階までに戻す必要がある)。この場合、反映に時間がかかりますが、ここはhostsファイルにホスト名IPアドレスペアを追加してしまえば良いと思います。

プラグインの設定に注意

プラグインによっては、サーバの絶対パスを利用している場合があり、サーバ上のユーザ名が変わってしまった場合などでエラーを表示してしまいます。このあたりはそれぞれ対処してください。私の場合は、WordPress Super Cacheがエラーを表示しました(「Warning! WP Super Cache caching broken! The script advanced-cache.php could not load wp-cache-phase1.php. Please edit /home/username/www/wp-content/advanced-cache.php and make sure the path to /home/username/www/wp-content/plugins/wp-super-cache/wp-cache-phase1.php is correct.」)

トップページで安心しない

挙動を確かめるときは、トップページだけでなく、個別記事やログイン画面なども確認してください。また、投稿できるかの確認も忘れずに。

まとめ

今回は、BackWPupのバージョンアップにともなって、BackWPupの使い方をまた一から書き直しました。

また、前回はさくらのレンタルサーバからさくらのVPSへのリストアを紹介したので、今回はさくらのレンタルサーバから、別の桜のレンタルサーバへのリストアを紹介してみました。これはこれでマルチドメイン設定などのコツが見つけられて、ためになりました。

ぜひ皆さんも、自分でリストアの訓練をやってみてください。ついでに、作業マニュアルを作っておくと、いざというとき合わせないで済むと思います。特に、本当に障害が起こったわけでは無い今だからこそ、必要な情報をメモしておけるというのを活かして、いろいろと書き出しておくとよいと思います。

コメント(10)

  1. 松本 太一
    2013年7月2日(火) 10:01

    did2様

    先週末、ワードプレスで作成したブログがバグりました。管理画面にさえアクセス出来ない事態でした。

    開設して数ヶ月のブログでしたが、この数ヶ月間、苦労して作り上げて来たので頭が真っ白になりました。

    色々なサイトを渡り歩き、did2さんのこのエントリーにたどり着きました。このエントリーはBackWPupの使い方を解説されたものですが、実際にリストアする部分が、ワードプレスバグ初体験者の僕にとっては神コンテンツでした。そのおかげで無事にリストアまでたどり着きました。心より感謝いたします。

    did2さんの記事は細かいところまで手が届く記事ばかりで目からウロコです。did2さんのようなブロガーになりたいと強く感じました。本当にありがとうございました。

  2. did2
    2013年7月15日(月) 03:30

    >松本太一さん
    コメント本文をドキドキしながら中盤まで読んでいたのですが、無事解決できたようでよかったです(^_^)b

    これからも、誰かの役に立つ記事を書けたらなぁと思いながらマイペースに書いていきたいと思います。コメントありがとうございました!

  3. hedera
    2013年7月14日(日) 14:39

    初めまして、いつも詳しい記事を有難うございます。
    初心者で、コメント欄に質問などさせていただいてよいものかも、わからずながら、書かせていただいています。

    私はホームページビルダーを使って、ワードプレスのサイトを作っているのですが、今回、did2さんの記事を見て、これはバックアップしなければ!と思い挑戦しました。

    did2さんの記事の通りに進めまして、リストアしたサイトがついに表示されたのですが(パソコン超初心者のため、いろいろ質問しながら3か月ほどかかりました(笑い))、しかし、表示されたのはホームページビルダー側で制作したページのみで、肝心のブログが表示できませんでした。
    BuckWPupでのsqlファイルの中には、ブログの記事はバックアップされていたのですが、ブログを表示させるためにはどのような箇所を改善すればよいでしょうか。
    ホームページビルダーには、ホームページビルダー専用のワードプレスのダッシュボードが作られまして、その専用のダッシュボードからデータを「繁栄する」という形になっています。

    完全に行き詰ってしまいました。お助け下さいますよう、宜しくお願い致します。

  4. did2
    2013年7月15日(月) 23:30

    >hederaさん
    「表示されない」というのはどういう状態でしょうか。エラー画面が表示されるのか、真っ白なのか、記事が全く無いように表示されるのか、などなどいろいろあると思います。それによって、考えられる可能性がだいぶ変わります。

    現時点では、「バックアップしていたsqlファイルをMySQLサーバにインポートする作業は実施済みで成功しているか」「WordPress自体が正しく動作しているか」を確認してみてください。

  5. hedera
    2013年7月17日(水) 11:18

    did2さん、返信していただきまして、ありがとうございます。
    もう一度、リストアし直しましたら、見事にリストアできました。お騒がせして、すみませんでした。
    失敗した理由は、「プラグインの一覧(.txt)」をサーバー上に設置していなかったからだと思います。
    did2さんの記事の <【リストア編】 2.バックアップファイルの解凍・確認> を読んだときに、「データベースのバックアップファイル(.sql)」と「プラグインの一覧(.txt)」をサーバーにはアップロードしないんだろうと勝手に思い込んでいました。

    返信していただいたおかげで、もう一度やってみようという気になり、成功した時には、<やった~>と感激しました。
    貴重なお時間で返信いただき、本当に有難うございました。

  6. did2
    2013年7月29日(月) 15:17

    >hederaさん
    成功おめでとうございます。

    .sqlのバックアップファイルをアップロードしていなかったということは、MySQLにデータベースのバックアップファイルをインポートしていなかったのが原因ですかね。バックアップファイルはインポートさえできればアップロード自体は必要ではありません(普通アップロードしてからインポートするのが楽)。また、プラグイン一覧も、特に必要なファイルでは無いはずです。もしくは、他の原因が、やり直したことによって解決されただけかもしれません。

  7. おかし
    2013年9月24日(火) 11:19

    はじめまして、こんにちは。
    こちらの記事を一生懸命見ながら、3日がかりでリストア成功までできるようになりました。本当に助かりました。ありがとうございました。とくにBackWPupの設定の説明が丁寧でありがたかったです。
    ついでに、Jingというソフトも教えていただき重宝しています。
    これからも楽しみにしています。

  8. 山崎
    2013年10月16日(水) 22:31

    いつも素敵な情報ありがとうございます。

    mysql>use wordpress_database_name
    mysql>source ~/www/wp/backup.sql

    —–

    上記の部分で手こずっております。/Users/yamazaki/Desktop/abc.sql
    といった絶対パスを打っても、

    Failed to open file ‘/Users/yamazaki/Desktop/abc.sql’, error:2

    というエラーが出て先に進みません。解決策を教えて頂けると幸いです。

  9. 山崎
    2013年10月16日(水) 23:05

    連続投稿申し訳ございません。
    何か勘違いしていたようです。
    サーバーの中にあるsqlを実行するのですね。。。ご迷惑をおかけしました。

    山崎

  10. mizjiee
    2013年11月14日(木) 23:57

    abc.sakura.ne.jp から xyz.sakura.ne.jp への backup&restore を、ここに示された通りの手順でやってみました。

     結果は、一見、完全に引っ越しできてるようにみえましたが。
     例えば、メタ情報のログインを押すと、
    abc.sakura.ne.jp のログインへ飛びます。
     引っ越すべきファイルの選択とか、その他
    いろいろと問題がありそうな気がしますが、どうなんでしょう?
    (78才の老アマチュア・プログラマーより)

新しいコメントを投稿