wp-envでデータベースをバックアップする

2 min読了の目安(約2400字TECH技術記事

複数人でwordpressのテーマ開発をする場合に問題になるのがデータベースのマイグレーション。

最近はプラグインを利用してマイグレーションファイルを作成することができる。
All-in-One WP Migration – WordPress プラグイン | WordPress.org 日本語

無料版はアップロードファイルの容量制限があるので、プロダクションで利用するのは少し辛い。あと管理画面上からの操作のみ。

容量無制限かつ、コマンドラインからの操作も可能にするためには以下の拡張プラグインが必要。
All-in-One WP Migration Unlimited Extension

バックアップファイルの作成

コマンドラインからの操作が可能になったのでwp-envとの組み合わせを考えてみる。手元の操作でマイグレーションファイル(バックアップファイル)を作成・リストアできるようにしてみたい。

Makefileにコマンドをまとめてみた。

.PHONY:

wp-backup:
	yarn run wp-env run cli wp ai1wm backup --exclude-spam-comments --exclude-post-revisions --exclude-themes --exclude-inactive-themes --exclude-muplugins --exclude-plugins --exclude-inactive-plugins --exclude-cache --exclude-email-replace

wp-backup-list:
	yarn run wp-env run cli wp ai1wm list-backups

check-filename:
ifndef filename
	$(error filename is undefined)
endif

wp-restore:check-filename
	echo "restore from: $(filename)"
	yarn run wp-env run cli wp ai1wm restore $(filename)

wp-envを起動した状態で、make wp-backup を実行する。テーマファイルはGitで管理しているので、バックアップファイルには含めていない。その他余計なものも含んでいない。重要なのはデータベースとメディアファイル。

実行結果

バックアップファイルが、/var/www/html/wp-content/ai1wm-backups/ディレクトリに作成される。その場所をwp-envの設定でローカル環境にマッピングさせれば、バックアップファイルのGit管理が可能になる。

.wp-env.jsonはこうした。

{
	"core": "WordPress/Wordpress#5.6.1",
	"plugins": [
		"https://downloads.wordpress.org/plugin/all-in-one-wp-migration.7.37.zip",
		"./plugins/advanced-custom-fields-pro",
		"./plugins/all-in-one-wp-migration-unlimited-extension"
	],
	"themes": ["./sample-theme"],
	"mappings": {
		"./wp-content/ai1wm-backups": "./ai1wm-backups"
	},
	"config": {
		"WP_DEBUG": true,
		"WP_DEBUG_LOG": true
	}
}

ローカル環境のマッピングされた場所にバックアップファイルが表示されている。

バックアップファイル

バックアップファイルの一覧

続いてmake wp-backup-listでバックアップファイルの一覧を見る。

リストア(復元)するためのファイルをこのリストの中から選ぶ。ファイル名をコピーしておく。

バックアップファイルをリストア

wp-restoreコマンドでバックアップファイルから復元してみる。wp-resotre filename=:ファイル名というふうに引数にバックアップファイルを指定する。バックアップファイル名はmake wp-backup-listコマンドで確認することができる。