栃木県のJavaエンジニア、WEBプログラマーのためのサイト

2018.12.26日次バックアップのススメ

日々のWEBサイトの運用や更新作業の中で、ちょっとした作業ミスで
サーバー上のデータを消失してしまう事があると思います。

ローカルで保持しているファイルならまだしも、CMSでアップロードされたファイルや
DBのデータなどを削除してしまったら目も当てられません。

cronの設定なども crontab -e と叩くつもりが、
crontab -r と叩いてしまい、途方に暮れたこともあるのではないでしょうか?

…僕はあります。

サイトの復旧に必要なデータのコピーを、最低4日分程度を保持しておくのが賢明です。
3連休の直前にデータを消失して連休明けに気づく、なんて事もあるかもしれないので..。

backup.sh

#!/bin/bash

backup_dir= '/****/backup'
web_dir= '/****/html'
TODAY=`/bin/date +%y%m%d`

#DBのダンプ
##構造
mysqldump -u **** -p**** --compact --no-data --default-character-set=binary --all-database > ${backup_dir}/db_struct.sql
##データ
mysqldump -u **** -p**** --complete-insert --extended-insert --add-locks=FALSE --no-create-info --default-character-set=binary --all-database > ${backup_dir}/db_data.sql

#最新データをlatestに圧縮保存
## DB
tar -zPcvf ${backup_dir}/latest/db_struct.tgz ${backup_dir}/db_struct.sql
tar -zPcvf ${backup_dir}/latest/db_data.tgz ${backup_dir}/db_data.sql
## WEB
tar -zPcvf ${backup_dir}/latest/web.tgz ${web_dir}
## cron
tar -zPcvf ${backup_dir}/latest/cron.tgz /var/spool/cron

#dailyに日次コピー
cp -f ${backup_dir}/latest/db_struct.tgz ${backup_dir}/daily/${TODAY}.db_struct.tgz
cp -f ${backup_dir}/latest/db_data.tgz ${backup_dir}/daily/${TODAY}.db_data.tgz
cp -f ${backup_dir}/latest/web.tgz ${backup_dir}/daily/${TODAY}.web.tgz
cp -f ${backup_dir}/latest/cron.tgz ${backup_dir}/daily/${TODAY}.cron.tgz

#古いバックアップの削除
find ${backup_dir}/daily/*.taz -mtime +4 -exec rm -f {} \;

exit 0

この記事について
  • スッキリ (0)
  • 普通 (0)
  • 消化不良 (0)