wp-cliを使うと、簡単にデータベースのバックアップを行うことができます。出力されるファイルは、生のSQLです。mysqldumpを使ってもよいのですが、取得の仕方を工夫しないと、シェルのhistoryにパスワードが残ってしまうので、wp-cliでのSQLバックアップを検討してみてはいかがでしょう。
■ wp-cliによるSQLのバックアップ
単純に「wp db export」するだけです。DB名やユーザー名、パスワードはwp-config.phpから引っ張ってくるので、手入力する必要がありません。
# wp --allow-root db export --path=/home/vhosts/$(uname -n)/public_html Success: Exported to wpdb0001.sql
出力されるファイル名は、wp-config.phpに書かれているデータベース名になります。
■ mysqldumpではこうする
ちなみに、mysqldumpでなるべくパスワードを手打ちしない方法はこんな感じです。
# CONFIG=/home/vhosts/wp-centos7/public_html/wp-config.php ; mysqldump -u $(cat ${CONFIG} | grep DB_USER | awk '{print $NF}' | sed -e "s/[');]//g") -p$(cat ${CONFIG} | grep DB_PASSWORD | awk '{print $NF}' | sed -e "s/[');]//g") $(cat ${CONFIG} | grep DB_NAME | awk '{print $NF}' | sed -e "s/[');]//g") > $(cat ${CONFIG} | grep DB_NAME | awk '{print $NF}' | sed -e "s/[');]//g")_mysqldump.sql
最初にwp-config.phpのフルパスを変数に入れてもなおこんな長さです。長いですね・・・。おまけに、MySQL 5.6からはパスワードをシェルから入力すると「Warning: Using a password on the command line interface can be insecure.」なんて怒られてしまいます。
ちなみに、wp-config.phpからDB名、ユーザー名、パスワードを抜き出すとこんな風になります(以下のパスワードはデタラメですよ)。
# cat /home/vhosts/$(uname -n)/public_html/wp-config.php | egrep '(DB_NAME|DB_USER|DB_PASSWORD)' | awk '{print $NF}' | sed -e "s/[');]//g" wpdb0001 user0001 A3kqJdxP
■ 両者のSQL比較
diffを取ってみるとこうなります。
# diff wpdb0001.sql wpdb0001_mysqldump.sql 381c381 < -- Dump completed on 2015-01-04 10:21:51 --- > -- Dump completed on 2015-01-04 10:21:46
取得した時間しか違いませんね。ね、簡単でしょう?
[amazonjs asin="4774170208" locale="JP" title="MariaDB&MySQL全機能バイブル"]