ログローテートスクリプト作成2

■作業概要

以前作成したログローテートスクリプトでは各ログ別に保存期間を変更出来ませんでしたので
今回、設定ファイルに保存期間を書き込むことでその期間を過ぎれば削除することが可能な
スクリプトを作成した。

■実現方法

linuxに搭載されているcronとシェルスクリプトを組み合わせて作成。

■仕様説明

/usr/script/rotate.txtにローテーションしたいファイルパスを記載する
1行につき1ファイル
尚、今回のスクリプトはsyslogに処理ログを吐くようになっている
crontab -eで定期的に実行されるよう登録
例:毎晩0時に実行する場合
0 0 * * * /usr/script/logrotate.sh

■rotate.txtの中身

[ローテート対象] [保存期間]
/var/www/vhosts/default/LOG/access_log +180
/var/www/vhosts/default/LOG/error_log +180

■スクリプト

##
## LOG LOTATE SCRIPT
## VERSION : 1.02b
##
#!/bin/sh
FILE="/usr/script/rotate.txt"
LASTDAY="date -d '1 days ago' '+%Y%m%d'"
if [ -e ${FILE} ] ; then
logger -i -s -t log "Rotate the start of the log."
while read line
do
LOGPATH=echo ${line} | awk '{print $1}'
SAVETIME=echo ${line} | awk '{print $2}'
if [ -e ${LOGPATH} ]; then
cp ${LOGPATH} ${LOGPATH}_${LASTDAY}
gzip -f ${LOGPATH}_${LASTDAY}
if [ $? -eq 0 ]; then
cp /dev/null ${LOGPATH}
fi
find dirname ${LOGPATH} -name "basename ${LOGPATH}_*" -type f -ctime ${SAVETIME} | xargs rm -rf
fi
done < ${FILE}
logger -i -s -t log "Rotate the end of the log."
fi
exit 0;