WP-CLIを使ったDBのインポート/エクスポート処理シェル

7月30日に行われたWP ZoomUPでWP-CLIでモリカワテツシ さんが「太宰治がブログを作ってみたら」というLTをされた際、コメント欄では「WP-CLIでよく使うコマンドは?」と言った内容で盛り上がったりしていた。
(コメントがまだ掲載されていないがそのうち掲載されるはず?#24 WP ZoomUP 夏のWordPress LT大会!

その際にいつもやる作業はシェルにまとめてるからという話をしていたので、今回はDBのインポート・エクスポート処理のシェルを紹介する。

普段はWordMoveを使用したりするのだが、環境によってはリモート側が要件を満たしておらず使用できない事がある。
そういったときに、DBの同期作業が面倒なので準備しているものである。

インポート

#!/bin/sh

datetime=$(date "+%Y%m%d%H%M%S")

echo "DBをインポートします。"

wp db export "/vagrant/wordpress/wp-content/export_${datetime}.sql"
wp db import /vagrant/wordpress/wp-content/dump.sql
wp search-replace https://example.com http://vccw.test
wp user update user_name --user_pass="*****"

echo "完了しました。"

流れとしては、一旦手元のDBのダンプを取得したあと、用意しておいた差し替えたいダンプをインポート。
基本的にリモートとのやり取りに置いて、WordMoveを普段使用したきの作業を想定しているので、サイトURL周りの置換を行った上で、管理者ユーザのパスワードを簡単なものに書き換える。

といったもの。

ローカル環境で使用することを想定しているので、パスワードを簡単なものに書き換える作業をしているが、公開環境では絶対NGなので適宜書き換えて使用してもらうのが良いかと。

エクスポート

#!/bin/sh

echo "DBをエクスポートします。"

datetime=$(date "+%Y%m%d%H%M%S")

wp search-replace http://vccw.test https://example.com
wp user update user_name --user_pass="*****"
wp db export "/vagrant/wordpress/wp-content/export_${datetime}.sql"
wp search-replace https://example.com http://vccw.test
wp user update user_name --user_pass="*****"

echo "完了しました。"

こちらも使用想定は同様。

ローカル用に書き換えられていたURLをリモート用に書き換えてパスワードも元に戻した上でエクスポート。

エクスポートが終わったら、URLとパスワードをまた作業用に戻して完了

search-replaceについて

使いこなしている人には当たり前かもしれないが、search-replaceでURLの書き換えを行うときには、最後のスラッシュを含め無いほうが良い。

状況にも寄るが今回紹介したような作業であれば、最後のスラッシュの有りなしで書き換わらないものが発生するからである。

逆にhttpなどのプロトコル部分は含めておいたほうが良いように思う。
(もちろん、sの有りなしを間違えないように記述しておく必要はあるが…)

この記事を書いた人

Shizumi

熊本在住のWebプログラマ。熊本WordPressMeetupのオーガナイザー。WordPressを使い始めたのは2012年頃から。