- 「いつ」実施されるかわからない
- バックアップをとってから、やってほしい
という要望を満たすことが出来ません。
ので、もしサーバーで WP-CLI、BackWPUPプラグイン、そして cronが利用できるなら、コマンドベースのバックアップもオススメですよ!
以下は備忘録を兼ねて、一例として書いておきます。
流れ
予め作成していたファイルより WordPressの情報を読み取り、それらに対して下記の作業を順次行っていく。つまり複数の WordPress,WordPressの言語にも対応。
- BackWPUPプラグインのジョブを実行し、ファイル・フォルダとデータベースのバックアップをとる
- WordPressのプラグインのうち、更新可能なものを更新する
- WordPressのシステムのアップデートを試み、成功したらDBのアップデートも行う
また、以上の作業ログについては標準出力とエラー出力を、日ごとにファイルわけして保存します。
利用するスクリプトは sh
cshが使えたらもうちょい簡単なのですけど、 sh しか使えないサーバーもあります。
ので sh でいきます。
ので sh でいきます。
前提条件
説明のために、下記の状況だとします。
WordPressのサイト
- http://example.com (英語版 WordPress)
インストールフォルダ:/home/◯◯/△△/example.com
BackWPUPのジョブID:1
BackWPUPによる保存先:/home/××/backup/example.com - http://hoge.example.com (日本語版 WordPress)
インストールフォルダ:/home/◯◯/□□/hoge.example.com
BackWPUPのジョブID:2
BackWPUPによる保存先:/home/××/backup/hoge.example.com
※BackWPUPのジョブIDは、ジョブ編集画面を表示中に URLを見てください。
※BackWPUPによる保存先フォルダは、/home/××/backup/FQDN とします。
バックアップスクリプトが、BackWPUPによるジョブを起動する前に、本当にバックアップ先があるかどうかチェックするためです。
ログ保存先
- /home/××/backup/logs
これ以下に、20160908.log のように年月日.log ごとにログを追記します。
環境設定ファイルの用意
/home/◯◯/bin/wp-targets.dat というファイルを作成したとします。
※ # が含まれる行は無視されます。
※ # が含まれる行は無視されます。
#
# [backup folder name]:[backwpup job ID]:[WordPress folder]
#
example.com:1:en:/home/◯◯/△△/example.com/
hoge.example.com:2:ja:/home/◯◯/□□/hoge.example.com/
のように保存。
WP-CLIのファイルパス
- /usr/local/bin/wp
と仮定。
WordPress の自動バックアップ&自動アップデートスクリプト
- /home/◯◯/bin/wp-update.sh
とすると、
がサンプルプログラムになります。
※WP-CLIは /usr/local/bin/wp と決め打ちしています。
/usr/bin/wp の場合には、$WP_CLI以外に、
awk '{print "/usr/local/bin/wp plugin update "$1}'
の2箇所の /usr/local/bin/wp も変更しておいてください。
※WP-CLIは WordPress新バージョン対応など頻繁にアップデートします。
※WP-CLIは /usr/local/bin/wp と決め打ちしています。
/usr/bin/wp の場合には、$WP_CLI以外に、
awk '{print "/usr/local/bin/wp plugin update "$1}'
の2箇所の /usr/local/bin/wp も変更しておいてください。
※WP-CLIは WordPress新バージョン対応など頻繁にアップデートします。
wp cli update
にて自動アップデートできますので、毎日 cronに登録しておくとよいと思います。
にて自動アップデートできますので、毎日 cronに登録しておくとよいと思います。
これをサーバーに入れて、cron で毎日実行させれば
毎日 WP-CLIを介して、BackWPUPによるバックアップ、プラグイン更新、システム更新をしてくれます。
ちょっと複雑かもしれませんけど、全自動はなかなか楽ですよ〜。
2016年9月8日 @kimipooh
出力について上書きにしていたので、追記に変更
返信削除変更前
} 1> $log_file 2>&1
変更後
} 1>> $log_file 2>&1