はじめに
Linuxで何かのバックアップを取るシェルスクリプトをcronで回すというのはよくやると思います。
その際のシェルスクリプトってほとんど共通なので、自分のためにメモっておきます。
仕様
- バックアップファイルはアーカイブされていること
- ファイル名にはホスト名と日付を入れる
- 世代管理する
- ログはsyslogに書き出す
スクリプト
backup.sh
#!/bin/sh
hostname=`/bin/hostname`
date=`/bin/date +"%Y%m%d_%H%M"`
path=PATH/TO/BACKUP
filename="${path}/${hostname}_${date}.gz"
filekeepdays=7
echo "XXX backup started." | logger -t xxx_backup
#BACKUP_COMMAND 2>&1 | logger -t xxx_backup
for file in `find ${path}/ -mtime +${filekeepdays} -type f -name \*.gz`
do
echo "deleted: " ${file} | logger -t xxx_backup
/bin/rm ${file}
done
echo "XXX backup finished." | logger -t xxx_backup
exit 0
まとめ
ログをsyslogに吐き出すと、いちいち個別にログローテーションを考慮しなくて楽です。