wp-cliとcrontabを使ってプラグインを一切使わず自動でバックアップとアップデートをする。
ApacheユーザーにWordpressファイルの書き込み権限を与えたくなかったので、cronからシェルスクリプトを走らせてWordpressのアップデートとついでにバックアップできるようにした。
プラグインを必要以上にたくさん入れると重くなるし脆弱性のリスクも上がるので、データベースのバックアップはwp-cliを使ってソースコードのバックアップはLinux標準ツールで単純にtar.gzアーカイブを作成する。
目次
前提
- wp-cliが/usr/local/bin/wpにインストールされていること。(インストール方法)
シェルスクリプト
バックアップとアップデート用にシェルスクリプト書いたので以下のコードをcrontabで1日おきぐらいに走らせればOK。
ただ、wp-cliは定期的にアップデートされて古いバージョンだと最新のWordpressでうまく動かなくなる場合があるので、以下のシェルスクリプトを走らせる30分ぐらい前に/usr/local/bin/wp cli updateをrootで走らせておく。
#!/bin/sh
# https://ayame.space/2017/05/update-and-backup-wordpress-by-wp-cli
# Copyright (c) 2017 ayame.space All rights reserved.
#
# This software is released under the MIT License.
# http://opensource.org/licenses/mit-license.php
base_dir="[Wordpressのディレクトリ]"
backup_dir="[バックアップデータを保存するディレクトリ(最後に/はつけない)]"
log_dir="$backup_dir/log"
db_dir="$backup_dir/db"
html_dir="$backup_dir/html"
cd $base_dir
echo "Start backup and update."
{
echo "[`date '+%Y-%m-%d %H:%M:%S'`] Start backup..."
/usr/local/bin/wp db export $db_dir/`date +%Y-%m-%d`.sql
tar -zcvf $html_dir/`date +%Y-%m-%d`.tar.gz $base_dir
echo "[`date '+%Y-%m-%d %H:%M:%S'`] Start update..."
/usr/local/bin/wp core update
/usr/local/bin/wp plugin update --all
/usr/local/bin/wp theme update --all
/usr/local/bin/wp core language update
echo "[`date '+%Y-%m-%d %H:%M:%S'`] Delete old files..."
find $db_dir -mtime +30 | xargs rm -fv
find $html_dir -mtime +30 | xargs rm -fv
echo "[`date '+%Y-%m-%d %H:%M:%S'`] Success."
} 1>> $log_dir/`date +%Y-%m-%d`.log 2>&1
echo "Success."
参考
追記
- 2017/05/12 16:50: wp-cliのコマンドをフルパスに変更