
ワードプレス(wordpress)のバックアップで困ったことはありませんか?
wordpressはカスタマイズ性が高く、プラグインをインストールすれば様々な機能を追加することができます。もちろん、バックアップを容易にするプラグインもありますので、通常、wordpressをバックアップするときにプラグインを使うと思います。
・BackWPup
・All-in-One WP Migration
・VaultPress
・UpdraftPlus
あたりが有名でしょうか?
しかし、プラグインを使ってサイトをバックアップすることは可能ですが、以下の理由から私はプラグインを使ったバックアップはおすすめしません。
・バックアップデータの容量制限がある(バックアップはできるがリストアができない)
・バックアップ/リストアがプラグインに依存する(プラグインが公開停止になればリストアできなくなる)
・ほとんどの場合、プラグインの機能制限解除が有料
あれ、意外と単純な理由・・。と思った方もいるでしょう。
でも、大事なことなんです。
本記事では、プラグインを使わずに確実&無料でwordpressをバックアップする方法について書きたいと思います。
Contents
プラグインを使ったバックアップ/リストアのデメリット
プラグインを使ったバックアップ/リストアのデメリットについて以下に述べます。
バックアップデータの容量制限がある
もし、これからブログを始める方であればバックアップデータはそこまで大きくないかもしません。しかし、これからガンガン記事を増やしていって人気のサイトになったとき、おそらくバックアップデータは500MB以上の容量になるでしょう。
そうなると、あなたはプラグインでのリストアができないかもしれません。プラグイン側で機能制限をかけているからです。
私はやってしまいました。バックアップしたもののリストアができないというチョンボを。あの時は、本当に悲しかったです。頭が真っ白になり、さすがにこの時ばかりはもうブログを書くのを辞めようと思いました。
こんな思いは、もうしたくないと思いました。
バックアップ/リストアがプラグインに依存する
これも、致命的です。プラグインでバックアップを取ると、リストアもプラグインに依存します。もし、プラグインが公開停止になったら、あなたのブログはバックアップはおろか、リストアもできなくなるのです。今日、バックアップを取得しても、来週リストアできる保証はないのです。

ブロガー
プラグインが公開停止になっても、既にプラグインをインストール済みだったらバックアップもリストアもできるでしょ!
その通り、プラグインがインストール済みならリストアもできるでしょう。
しかし、 リストアをするシチュエーションをよく考えてください。wordpressの動きがおかしくなったり使えなくなったときに、実施しますよね?
そして、通常そんな場合はwordpressをクリーンインストールしますよね?あるいは、サーバーが飛んだ時は、wordpressをクリーンインストールするしかありません。
その時にバックアップを取得したプラグインが入手できなければリストアができなくなるのです。

ブロガー
それは怖いね・・・。
ほとんどの場合、プラグインの機能制限を解除が有料
プラグインによっては、バックアップの機能に制限をかけている場合があります。例えば、上記のバックアップデータの容量によってリストアができなくしたり、定期バックアップができなかったり、一定期間に実行できるバックアップ回数に制限がある場合があります。
・バックアップデータの容量によってリストアができない
・定期バックアップができない
・一定期間に実行できるバックアップ回数に制限がある
等
一方で、こうした機能制限を解除する方法があります。
それは、有料ライセンスの購入もしくは、有料版のプラグインに移行することです。
お金をかけても言い方は支払いすれば解決です。
で・す・が、私はお金をかけずに完全なバックアップ/リストアができるようにしたいと思っています。
プラグインを使わずに確実&無料でwordpressをバックアップする方法
本記事では、Dockerを使ってプラグインを使わずに確実&無料でwordpressをバックアップする方法をご紹介します。
「Dockerを使って」というところがこの記事のミソなので、サーバ環境を汚さずに構築したい場合にぜひ参考にしてください。
インストール手順

前提
git、dockerおよびdocker-composeがインストールされていることが前提です。
もし、まだインストールしていない場合はこちらを参照してインストールしましょう。
私と同じ環境で構築される場合、構築で躓いた際にサポートできると思います。メモリ8GB以上を選択すればエンコード等しても性能的に問題はないと思います。Windows10マシンですが、私はUbuntuを上書きインストールして自宅サーバを構築しています。
Dockerプロジェクトの作成
まず、dockerプロジェクトのディレクトリを適当な場所と名前で作成しておきます。
1 2 |
mkdir ~/wordpress cd ~/wordpress |
このあと作成するファイルは、docker-compose.ymlのみです。
最終的に以下のディレクトリ構成になります。
1 2 |
~/wordpress |--docker-compose.yml |
非常にシンプルです。
では、docker-compose.ymlを作成していきます。
docker-compose.yml
docker-compose.ymlを作成します。エディタは何でもOKです。
1 |
emacs docker-compose.yml |
以下の内容をdocker-compose.ymlファイルにコピー&ペーストします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
version: '3' services: db: container_name: wordpress_db image: mysql:8.0 environment: MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_ROOT_PASSWORD: wordpress volumes: - ./mysql/:/var/lib/mysql/ restart: always wordpress: container_name: wordpress image: wordpress:php7.4-apache depends_on: - db ports: - "80:80" environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress volumes: - ./wp:/var/www/html restart: always |
7~10行目:mysqlのユーザ名、パスワード、 データベース名、 rootパスワードを環境変数で定義しています。それぞれ、自由に変更してください。もし、変更する場合は24行目も設定値に合わせて修正してください。特にこだわりが無ければこのままでOKです。
21行目:ポート番号を指定します。この例ですとホストの80番ポートをコンテナの80番ポートと紐づけています。もし、ホスト側で80番ポートを既に使用中であれば、ここを変更してください。例えば、ホスト側の8080番ポートをwordpress用に使いたい場合は、「8080:80」とします。
上記以外の修正は特にありません。
コンテナ起動
以下のコマンドでコンテナを起動します。
1 |
docker-compose up -d |
1分~待てばwordpressの出来上がりです。
下記のURLでwordpressのインストール画面が表示されれば完了です。

インストールできれば、wordpressで自由にテーマや記事を追加していきましょう。
ちなみに、コンテナを起動すると、以下のようなディレクトリ構成になります。
1 2 3 4 |
~/wordpress |--docker-compose.yml |--mysql/ |--wp/ |
バックアップ方法
この方法でwordpressをインストールした場合、mysqlとwpディレクトリを取得しておくことでバックアップになります。
簡単なバックアップスクリプトを作成したのでこちらを参考にしてください。
1 |
emacs ~/wordpress/tar_backup.sh |
以下のコードをコピペしてください。
1 2 3 4 5 6 7 8 9 10 11 |
#!/bin/bash PWD=`pwd` OUT=/path/to/dir/`date '+%Y%m%d%H%M%S'`_`basename ${PWD}`.tar echo "tar backup start." echo "--> ${PWD}" tar cf ${OUT} ./ echo "done." echo "--> ${OUT}" |
4行目:バックアップファイルを保存するディレクトリ部分を修正してください
上記のスクリプトは、Dockerプロジェクト内に作成することを想定しています。つまり、下記の様なファイル構成になります。
1 2 3 4 5 |
~/wordpress |--docker-compose.yml |--mysql/ |--wp/ |--tar_backup.sh |
実行方法
以下のコマンドで実行できます。
1 2 |
cd ~/wordpress sudo bash tar_backup.sh |
正常に実行できていれば、指定したディレクトリにバックアップファイルが生成されているはずです。
1 2 |
ls /path/to/dir 2020041024212653_wordpress.tar |
これでwordpressのバックアップは完了です。
リストア方法
リストアは、上記のバックアップファイルをDockerプロジェクトディレクトリに展開してリストアして復旧します。事前にコンテナを停止しておいてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
cd ~/wordpress # コンテナを停止 docker-compose down # wordpressデータを削除 sudo rm -rf mysql/ wp/ # バックアップファイルをコピー sudo cp -a /path/to/dir/2020041024212653_wordpress.tar . # tarファイルを展開 sudo tar xf 2020041024212653_wordpress.tar . # コンテナを起動 docker-compose up -d |
これでリストア完了です。簡単ですよね?
まとめ

今回は、Dockerを使ってプラグインに依存しないwordpressの構築方法とバックアップ/リストア方法について紹介しました。
バックアップは単なるシェルスクリプトで実施できるので、crontabに追加しておくことで定期的&自動的にバックアップを取得することが可能になります。
実際、私もこの方法でwordpressのバックアップを取得しています。私が経験した過去の悪夢(wordpressの記事が消失)を踏まえて、この方法を強くお勧めします!
ぜひ、参考にしてください。
他にも、Dockerを使った様々なサービス構築方法を紹介していますので、ぜひ見てみてください!
コメント