Categories: プログラミング

wordpressサイトのバックアップと復元 まとめ

本格的に運用は開始したものの、
全体バックアップを取っていないので大幅な変更に踏み切れない上、アメブロの記事も削除できない。
ここで記事やテーマを含めな全体バックアップをとっておくことに。
バックアップしたファイルを復元する方法までまとめてみます。
参考サイト→ http://orangeorange.jp/archives/14046
こちらの操作はワードプレスのバックアップ系プラグインを使用せずにftpソフトとブラウザのみで操作しています。
バックアップ系のプラグインを使用するともっと楽にバックアップできるかもしれません^^;;;
注意)
この操作の検証はさくらインターネットのサーバからバックアップしたwordpressサイトをxamppで動作しているローカルPCで動くかどうか確認したものです。
実際にレンタルサーバに戻したものではありませんのでご注意下さい。
■バックアップ手順 大まかな手順は2ステップ
1) サイトのバックアップ
2) データベースのバックアップ
■バックアップの各ステップ手順
1) サイトのバックアップ
1-1) ftpソフトで対象のディレクトリ以下全体をコピー(私はFileZiller使用)
このサイトの場合:/fehobby 以下全て
wordpressではルートのファイル全てとサブディレクトリ「wp-admin」「wp-content」「wp-includes」の3個2) データベースのバックアップ
2) データベースのバックアップ
2-1)phpMyAdminの画面でデータベースをエクスポート。
左のデータベース選択でデータベースを選択する。
2-2) エクスポートタブでエクスポートグループのリストからで該当サイトのテーブルを選択する。
(一つのデータベースに複数のWPサイトのテーブルが有る場合接頭語から判断)
2-3) ラジオボタンが「SQL」を確認し、「オプション」グループ内の「構造」グループ
「DROP TABLE/VIEW/PROCEDURE/FUNCTION/EVENTを追加」にチェック
2-4) 「ファイルに保存」グループで「圧縮」を”zip形式”にして「実行する」をクリック
2-5) zip形式のファイルガダウンロードされるので保存
1)でコピーしたファイル一式と2)でエクスポートしたDBのzipファイルが揃えばバックアップ完了
備考)
・たぶんファイルのパーミッションとかあるので、unixでバックアップしたほうが良さそうですがWindowsで操作しても今のところ特段問題は出ていないようです。
・参考にしたWebの情報では上記に加えてダッシュボードのツールからxml形式でエクスポートしているようですが、インポート時に WordPress Importerプラグインをインストールする必要がある上、最大アップロードサイズはphp.iniのupload_max_filesizeを参照しているようなので不要ではないかと思います。
このプラグインは全体バックアップではなく記事やページのバックアップを日頃のオペレーションで行う物なのかもしれません。



■復元手順 おおまなかな手順は4ステップ

1) データベースの準備
2) データベースのインポート
3) バックアップしたファイルを丸ごと戻す
4) wp-config.phpの調整とデータベースデータの調整
■復元の各ステップ手順
1) データベースの準備
phpMyAdmin3.5.2等を使用してデータベースとユーザを作成
バックアップを取ったサイトで使用していたデータベース名とユーザー名で作ると楽
phpmyadminでの操作手順(例 DB名:hogeDB ユーザ名:hogename)
1-1) phpMyAdminで管理画面にログイン
1-2)  [データベース]タブを選択し[データベースを作成する]項でデータベース名を設定(例ではhogeDB)し参照順序を[utf8_general_ci]で[作成]を押す
1-3) データベースが作成されると左フレームに作成したデータベースがリストアップされるので該当のデータベースを選択する
1-4) 該当のデータベースを選択した→フレームの[特権]タブを選択し[新規作成]項から[ユーザーを追加する]をクリックしユーザを追加する
プルダウンは[テキスト入力項目の値を利用する]で、ユーザー名:hogename、ホスト:この例ではlocalhost、パスワード:以前のパスワード、パスワードを生成する項は無視、ユーザ専用データベースは[データベース”hogeDB”への全ての特権を与える]で[ユーザを追加する]を押しユーザ追加
2) データベースのインポート
2-1)  phpMyAdminの左フレームから該当のデータベースを選ぶ (例:hogeDB)
2-2) [インポート]タブを選択し[インポートするファイル]項の[ファイル選択]ボタンを押し、バックアップしたデータベースのzipファイルを選択する
2-3) ファイルの文字セットがutf8になっているのを確認して画面下部の[実行]を押す
インポートが正常に終了すればデータベースの準備はOK
3) バックアップしたファイルを丸ごと戻す
3-1) バックアップしたルート以下のファイル全てをサーバのルートディレクトリにコピー
ftpソフトでバックアップしたルートのファイル全てと「wp-admin」「wp-content」「wp-includes」のサブディレクトリをそのままコピー
エラーアップロードが終わればファイルコピーの準備はOK
おそらく全く同じ環境に復元した場合、ここで完全に復元されていると思われます
wordressが動作するデータベースやURLがバックアップしたデータと違う場合設定の調整が必要そうです。
4) wp-config.phpの調整と データベースデータの調整
4-1)  アップロードしたディレクトリのルートにあるwp-config.phpのデータベース絡みの項目で変更があるものを調整する
バックアップした環境と全く同じでデータベースの各パラメータも同じ場合は変更しなくても大丈夫かと・・・
今回の操作例ではローカルPCで動作確認しているのでMySQLのホスト名は要変更
/** MySQL のホスト名 */
define(‘DB_HOST’, ‘localhost’);
上記1) で作成したデータベースの設定がバックアップ時と違う場合、他に

// ** MySQL 設定 - こちらの情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */define('DB_NAME', 'hogeDB');
/** MySQL データベースのユーザー名 */define('DB_USER', 'hogename');
/** MySQL データベースのパスワード */define('DB_PASSWORD', 'hogepwd');

$table_prefix  = 'wp_hogepri';

の変更が必要になるかもしれません。
URLが違う場合、データベース内に記録されているURL情報を直さなければwordpressが生成するページが正しくならないので調整します
調整が必要そうなのは2箇所
optionsテーブルの
option_id=1のsiteurlとoption_id=37のhome項に今のwordpressのURLを設定
例 http://asakita.net/kabekin/ を  http://localhost/fehobby/ に変更
この設定は[ダッシュボード]の[設定]-[一般]でできますが、ローカルのダッシュボードにログインできないのでphpMyAdminでテーブルのデータを直接書きなおす必要がありそうです
記事中に画像を張っている場合、画像のURLはデータベース内に絶対パスで記録されているようです。
画像のURLを変更したい場合はデータベースの postsテーブルでpost_contentフィールドをSQLコマンドのupdateで一括置き換えする必要がありそうです。
update テーブル名 set カラム名=replace(カラム名,’置換前’,’置換後’)
私の環境では上記の操作でバックアップ&復元ができました。
私がハマったのは上記4)で、実際には復元されていたのかもしれませんがwpの生成するページのURLが正しくない為ページが正常に表示されていないものでした。
同じような現象の方、homeurlのチェックをされてみては如何でしょうか?
実際のレンタルサーバへの復元はやっていませんので、参考程度にどぞ^^;;;
もっと確実性のあるバックアップ&復元方法を実験しています。
こんな手があるよ~ 等、コメントをお待ちしています (*^_^*)

kabekin