WordPressサイトのバックアップ

以前Blackfin空挺団をCMSサイトに移した際、バックアップをどうするかが難題でした。大きな原因は二つありました。

一つは不慣れなCMSを使っていたことです。そのときにはいったい何をバックアップすればいいのかよくわかっていませんでした。二つ目はmySQLのバックアップをどうすればいいのか戸惑っていたことです。データベースをバックアップしなければならないのは自明ですが、では、どうやって?ということがわかっていませんでした。仮に手作業でやるとして、やってられないというのが正直な気分でした。結果的に、サーバー契約更新の手違いでサイトのデータはすべて失われました。

さすがに前回と同じ轍は踏みたくないので、WordPressのバックアップについてだいぶ調べました。多分、うまくいく方法を見つけましたので紹介します。

プログラムのバックアップ

WordPressは、インストール後に各種プラグインを入れてカスタム化するため、プログラム全体のバックアップが必要です。再度インストールしてもかまいませんが、復元まで時間がかかりますし、プラグインの細部は絶対に忘れます。そこで、WordPressとそのプラグインをごっそりバックアップする必要があります。同時に、ユーザー(私)がアップロードした画像やファイルなども同時にバックアップします。

バックアップにはgnu wgetを使う事にしました。wgetはhttpプロトコルの他にftpプロトコルによるダウンロードも可能です。コマンドラインからすべて制御できるため、バッチ処理に向いています。バックアップには以下のようなスクリプトファイルを作りました。

wget -r -l0 -nc –passive-ftp ftp://username:password@bfin.sakura.ne.jp/www
tar cvzf bfin_sakura_ne_jp_`date +%Y%m%d`.tar.gz bfin.sakura.ne.jp
rm bfin.sakura.ne.jp -r

wgetのパラメタにある username:passwordは、FTPサーバーのログイン情報です。bfin.sakura.ne.jpのコンテンツはすべてwww以下にあるため、URLはwwwまで指示しなければなりません。また、-rはディレクトリを再帰的にダウンロードすることを指示しますが、デフォルトでは5階層までしかダウンロードしませんので、-lオプションで階層制限なしでダウンロードするよう指示しています。

上のスクリプトは実行するとダウンロードしたファイルを日付付のtarファイルに圧縮して格納します。このプログラムは面倒でもVMWare上のubuntuから実行するようにします。ubuntuを常用している人はcronを走らせるといいでしょう。Windows環境の場合、パーミッションが保存されるかどうか私にはわかりかねます。

mySQLのバックアップ

mySQLに格納されているデータは、wp-dbmanagerプラグインを使ってWordPress自身にバックアップさせると便利です。このプラグインは定期的にデータベース内容をバックアップするだけではなく、その内容を圧縮してメールで送ってくれます。私はgmailのアカウントに送ることにしています。

また、定期的にデータベースの最適化をするよう指定できます。私は3週間に一度最適化を行う事にしました。

wp-dbmanagerが作ったバックアップデータは、mySQLのphpMyAdminからインポートすることでデータをリストアできることを確認済みです。

なお、バックアップデータはメールで送られる他にサイトの一領域に保存されます。そのデータは上で説明したプログラムのバックアップで同時にバックアップされるため、結果的にプログラムとmySQLデータのバックアップが一度に行われることになります。

VMWare上での演習

データのバックアップ作業は絶対に失敗が許されない作業ですので、手元のVMで実験を行いました。実験環境は

  • VMware Workstation 8.0
  • Ubuntu 10.04
  • XAMPP for Linux 1.7.4

です。VMware Workstationではなく、VMware Playerを使っても同じです。

LinuxへのXAMPPのインストールが終わったら、インストールディレクトリのhtdocs直下に上でダウンロードしたプログラムとデータを直接展開します。そして、htdocs/wp-config.phpをエディタで開きます。

wp-conhfig.phpにはその名の通り構成パラメタが格納されていますが、特に重要なものはmySQLサーバーのアドレスです。こればっかりは演習時に実際のサーバーと同じにするのは面倒なので、演習用に書き換えてしまいます。具体的にはlocalhostに変えてしまいます。

次にデータベースを復帰させます。XAMPPのphpMyAdminを開き、バックアップ元のサーバーで使っているものと同じデータベースを作ります。そして、データベースにユーザー名とパスワードを登録します。データベースのユーザー名とパスワードはバックアップ元サーバーのそれと合わせた方が無難です。サーバー設定を調べるか、wp-config.phpを調べるといいでしょう。

データベースの準備ができたら、wp-dbmanagerがバックアップしたファイルを編集します。これは拡張子が.sqlになっているファイルです。テキストファイルで開き、バックアップ元のWordPressサーバーのアドレスを実験用サーバーのアドレスで置き換えます。具体的にはbfin.sakura.ne.jpをlocalhostで置き換えました。

以上の準備ができたらphpMyAdminを使ってデータベースにバックアップファイルをインポートします。私の場合はこれで問題無く手元にDSP空挺団のクローン環境ができあがりました。

まとめ

バックアップは面倒な作業ですが、一度リストアできるところまで確認しておかなければいざというときに困ります。一通り試しておくことをお奨めします。こうして作り上げたクローン環境は、新しいプラグインの検証にも便利に使えます。

なお、上の検証方法は基本的にサーバーの引っ越しと同じですので、引っ越し時にも使えます。実際、私はWordPress公式サイトのMoving WordPressを参考にして作業をしました。

 

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください