インストールのところで説明したように、WordPressはMySQLデータベースを利用します。
バックアップすべきデータとしてはMySQLのデータとWordPressディレクトリ下にある画像データ等のメディアファイルや子テーマのカスタム内容といったところでしょうか。
WordPressファイルのバックアップ
簡単な方から手を付けましょう。
上記のとおりメディアファイルや子テーマディレクトリ内のファイルが肝ですが、面倒なのでドキュメントルート内のすべてのファイルを保存しておくと良さそうです。
以前サーバーの引っ越しをしたとき、ドキュメントルート内のすべてのファイルを移動したらすごく楽だったので、ディレクトリ構造を含めてパックしてしまいましょう。
cd /usr/local/www
tar -cvzf /root/backup/junkworks-backup.tar.gz junkworks
戻すときはこう。
cd /usr/local/www
tar -xvzf /root/backup/junkworks-backup.tar.gz
MySQLデータのバックアップ
例によってMySQLを直接操作してデータを吸い出します。mysqldumpコマンドを使うとデータベース単位でデータの書き出しができます。
これはsqlファイルというテキストファイルになります。
mysqldump -uuser_name -h localhost -p –opt database_name > database_name.sql
戻すときはこう。あらかじめ元に戻す空のデータベースを作っておきます。
mysql -uuser_name -h localhost -p database_name < database_name.sql
sqlファイルはsqlコマンドを含んだもので、mysqlにリダイレクトしてやるだけでデータベースを復元できます。
これね、パラメータとかいちいち覚えるの面倒だし、データベース名やユーザー名なんか全部wp-config.phpに書いてあるんだからそこから抜き出したほうがいいよね。で、バックアップコマンドやレストアコマンドを組み立てて表示させれば適宜コピペできて便利じゃない?
#! /bin/sh
WORD_LIST='DB_NAME DB_USER DB_PASSWORD DB_HOST table_prefix'
printf "%s\n" "[WordPress settings]"
for n in `echo $WORD_LIST`
do
value=`grep wp-config.php -e $n | sed -e "s/.*\('[^']*'\)[^']*/\1/"`
eval $n=$value
echo "$n=$value"
done
printf "\n%s\n" "[Backup command]"
echo "mysqldump -u$DB_USER -h $DB_HOST -p –opt $DB_NAME > ${DB_NAME}.sql"
printf "\n%s\n" "[Restore command]"
echo "mysql -u$DB_USER -h $DB_HOST -p $DB_NAME < ${DB_NAME}.sql"
出力結果はこんな感じになります。
[WordPress settings]
DB_NAME='database_name'
DB_USER='user_name'
DB_PASSWORD='password'
DB_HOST='localhost'
table_prefix='wp_'
[Backup command]
mysqldump -uuser_name -h localhost -p –opt database_name > database_name.sql
[Restore command]
mysql -uuser_name -h localhost -p database_name < database_name.sql
こうして出力されたバックアップコマンドやレストアコマンドをコピペして実行すれば楽ですよ。