#!/bin/sh # ****************************************************************************** # 機能説明 :APログローテートを行う。ファイルの移動先は、 # 退避対象ディレクトリ直下のarcディレクトリ。 # 引数 :arg1 - なし # 戻り値 :0 正常終了 # # ****************************************************************************** # =============================================================================# # 環境設定 # =============================================================================# BASE_PATH=`dirname $0` . ${BASE_PATH}/AP_ENV.sh # ログファイル名 LOG_FILE=${LOG_DIR}/${LOG_DATE}_${SHELL_LOGNAME}.log # ローテート対象ファイルリスト PRM_FILE=${SHELL_DIR}/list # ローテート対象日付 DEL_DATE=30 # =============================================================================# # 主処理 # =============================================================================# main() { log_output I "${SHELL_BASENAME} 処理開始" echo "" count=0 while read PRM_DATA # パラメータを1行読み込み do # ヘッダーは処理しない if [ `echo "${PRM_DATA}" | tr -d " " | cut -c1 ` != "#" ]; then # ディレクトリ設定 #TARGET_DIR=`eval echo $"$PRM_DATA"` TARGET_DIR=${PRM_DATA} ARC_DIR=${PRM_DATA}/arc # if [ -d ${TARGET_DIR} ]; then count=`expr ${count} + 1` log_output I "`FMTNUM ${count}` ${TARGET_DIR} ローテート処理開始" # 退避先ディレクトリの存在チェック if [ ! -d ${ARC_DIR} ]; then mkdir -pm 777 ${ARC_DIR} fi # アーカイブ対象ファイル数をカウント ARC_FILE_COUNT=`find ${TARGET_DIR} -maxdepth 1 -daystart -mtime +$DEL_DATE | wc -l` # アーカイブ対象ファイルが1以上ある場合に処理する if [ ${ARC_FILE_COUNT} -le 0 ]; then log_output I "`FMTNUM ${count}` ${TARGET_DIR} アーカイブ対象ファイルなし" else # ログ移動処理 find ${TARGET_DIR} -maxdepth 1 -daystart -mtime +$DEL_DATE -print0 |xargs -0 mv --target-directory=${ARC_DIR}/ # ログローテート処理 cd ${ARC_DIR} find . ! -name "*.tgz" -daystart -mtime +$DEL_DATE -print0 |xargs -0 tar czf `date +%Y%m%d --date '1 month ago'`.tgz --remove-files log_output I "`FMTNUM ${count}` ${TARGET_DIR} ${ARC_FILE_COUNT}個のファイルをアーカイブ" fi log_output I "`FMTNUM ${count}` ${TARGET_DIR} ローテート処理終了" echo "" fi fi done < ${PRM_FILE} log_output I "${SHELL_BASENAME} 処理終了" echo "" echo "" echo "" echo "" echo "" exit ${RTN_NORMAL} } # =============================================================================# # 主処理実行 # =============================================================================# main $* 1>>${LOG_FILE} 2>&1
### ログ出力元ディレクトリ
/var/log/aplog
${CATALINA_HOME}/webapps
evalは変数(=${CATALINA_HOME})を実体化(=/usr/local/apache-tomcat-x.x.xx)して解釈する
最新コメント