独自開発したアプリケーションのログ等でローテート処理が考慮されていない場合、 ログファイルが増殖し続け、気づいた時にはエライことになっていたなんてことは 誰しもあるはずです。 古くなってきたログファイルを洗い出して圧縮し、さらに一定期間が過ぎると自動削除 するシェルスクリプトを作成しcrontabに登録しておけば、ディスク使用率アラートで 夜中に起こされて対応することはなくなるはずです。
■シェルスクリプトサンプル
#!/bin/sh
# 指定日数より前のファイルを圧縮し、さらに指定日数より古いアーカイブファイルを削除
ARCHIVE_DAYS=10
DELETE_DAYS=60
TARGET_DIR=/root/scripts/logs
OUTPUT=${TARGET_DIR}/`date +%Y%m%d-%H%M`_ArchiveFiles.tar.gz
# 対象ディレクトリへ移動
cd ${TARGET_DIR}
# 圧縮するファイル(拡張子は、.logまたは.txt)のリストを作成
find . -mtime +${ARCHIVE_DAYS} -iregex ".*\.log$\|.*\.txt$" > ${TARGET_DIR}/file.list
# 圧縮対象ファイルが存在するかのチェック
num_line=`cat ${TARGET_DIR}/file.list | wc -l`
if [ ${num_line} -gt 0 ]; then
# リストに従ってtar.gzファイルを作成
tar -zcf ${OUTPUT} -T ${TARGET_DIR}/file.list
# リストに従って元ファイルを削除
for i in `cat ${TARGET_DIR}/file.list`
do
rm -rf ${i}
done
else
echo "ERROR: More than ${ARCHIVE_DAYS} days before the file does not exist !!"
fi
# 指定日数より古いアーカイブファイルを削除
find . -mtime +${DELETE_DAYS} -regex ".*\.tar.gz$" | xargs rm -rf
# リストファイルを削除
# rm -rf ${TARGET_DIR}/file.list
exit 0
こちらの情報が何かのお役に立てましたら幸いです。サイト継続のご協力ありがとうございます。m(_ _)m
0 件のコメント:
コメントを投稿