tips/shells/logdel

Last-modified: 2007-02-20 (火) 00:41:02
#!/bin/bash
#### 「生ログ状態での保存期間」中はそのまま
#### 「生ログ状態での保存期間」を超えたものは「アクセスログ保持期間」まで圧縮保存
#### 「アクセスログ保持期間」を超えたものは削除
# 生ログ状態での保存期間
LOW_DAYS=10
# アクセスログ保持期間
KEEP_DAYS=30
# アクセスログ保存ディレクトリ
LOG_DIR="/var/log/XXXX/"
# アクセスログファイル名フォーマット
LOG_FILE="????????_access.log"
# 圧縮済みアクセスログファイル名フォーマット
COMP_FILE="????????_access.log.gz"
#COMP_FILE="????????_access.log.bz2"
DATE=/bin/date
LS=/bin/ls
BASENAME=/bin/basename
RM="/bin/rm -f"
ECHO=/bin/echo
COMP_COM="/bin/gzip -9"
#COMP_COM="/usr/bin/bzip2 -z"
TMP=
# 圧縮対象年月日取得
LOW_DAYS=`expr $LOW_DAYS + 1`
ARCH_YMD=`$DATE --date "$LOW_DAYS days ago" +"%Y%m%d"`
# 削除対象年月日取得
KEEP_DAYS=`expr $KEEP_DAYS + 1`
DEL_YMD=`$DATE --date "$KEEP_DAYS days ago" +"%Y%m%d"`
# 対象ファイル圧縮
$LS $LOG_DIR$LOG_FILE 2>/dev/null|
while read LINE
do
TMP=`$BASENAME $LINE`
TMP=`$ECHO $TMP|cut -d'_' -f1`
if [ $TMP -le $ARCH_YMD ]; then
	$COMP_COM $LINE >/dev/null 2>&1
fi
done
# 対象ファイル削除
$LS $LOG_DIR$COMP_FILE 2>/dev/null|
while read LINE
do
TMP=`$BASENAME $LINE`
TMP=`$ECHO $TMP|cut -d'_' -f1`
if [ $TMP -le $DEL_YMD ]; then
	$RM $LINE >/dev/null 2>&1
fi
done
exit 0