wordpress 自体や plugin をバージョンアップするのに、いちいちバックアップとりながら作業するのが面倒。
バックアップ取ってくれる、plugin もあるけど痒い所は有料で、いまいちなのでシェル+cron で作った。
環境ファイル
backup.env を作成。ここに、必要な設定をいれておく。各々の環境で適宜変更すること。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 保存場所 BACKUP_DIR=/home/xxxxxx/backup/web # 保存日数 BACKUP_DAY=7 # DBサーバ DB_HOST=localhost # DBユーザ DB_USER=user # DBパスワード DB_PASSWD=password # WEBのディレクトリ WEB_DIR=/home/xxxxxx/www |
実行ファイル
backup.env と同じ階層に backup.sh を作成。
処理としては、web系のファイルのバックアップと、DBのバックアップを作成して、保存日数を超えたファイルは削除する。
実行権限を付けるのを忘れずに。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#!/bin/sh . ./`basename $0 .sh`.env date=`date +'%Y%m%d'` mysqldump -h${DB_HOST} -u ${DB_USER} -p${DB_PASSWD} --all-databases > ${BACKUP_DIR}/dump${date}.sql tar zcvf ${BACKUP_DIR}/webbackup${date}.tar.gz ${WEB_DIR} find ${BACKUP_DIR}/ -name "*.tar.gz" -mtime +${BACKUP_DAY} -exec rm -f {} \; find ${BACKUP_DIR}/ -name "*.sql" -mtime +${BACKUP_DAY} -exec rm -f {} \; |
cron の設定
お好みの時間で設定する。
1 2 3 |
00 01 * * * /home/xxxxxx/opt/shell/backup.sh |