独自開発したアプリケーションのログ等でローテート処理が考慮されていない場合、 ログファイルが増殖し続け、気づいた時にはエライことになっていたなんてことは 誰しもあるはずです。 古くなってきたログファイルを洗い出して圧縮し、さらに一定期間が過ぎると自動削除 するシェルスクリプトを作成し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 件のコメント:
コメントを投稿