#!/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)して解釈する

管理人/副管理人のみ編集できます