Shell每天定时打包日志文件

该脚本的作用是每天将应用程序目录下的analyzed目录下前一天的日志压缩并保存到archive目录下,目录结构类似archive/2011/02/22.tar.gz

 

添加cronjob

1 1 * * * /opt/etc/log/archive.sh /opt/var/log/prod >> /opt/etc/log/archive.log
 

 

archive.sh

#!/bin/bash

if [ $# -eq 0 ]
then
        echo "Usage: `basename $0` /opt/var/log/prod"
        exit $E_BADARGS
fi

APP_PATH=$1
APP_LIST_FILE=appList
ANALYZED_FOLDER=analyzed
ARCHIVE_FOLDER=archive
echo 'App path: '$APP_PATH

##Save apps to file
>$APP_LIST_FILE
ls -F $APP_PATH|grep /$ >> $APP_LIST_FILE ##将目标目录下的应用程序名字保存起来

##Archive log of apps by day
LAST_DAY_YEAR=$(date -d last-day +%Y)
LAST_DAY_MONTH=$(date -d last-day +%m)
LAST_DAY_DAY=$(date -d last-day +%d)
echo 'Last day: '$LAST_DAY_YEAR$LAST_DAY_MONTH$LAST_DAY_DAY
cat $APP_LIST_FILE | while read line; do
        CURRENT_APP_PATH=$APP_PATH/$line
        echo 'Current app path: '$CURRENT_APP_PATH
        mkdir -p "$CURRENT_APP_PATH/$ARCHIVE_FOLDER"
        ##Move last day logs
        mkdir -p "$CURRENT_APP_PATH/$ARCHIVE_FOLDER/$LAST_DAY_YEAR/$LAST_DAY_MONTH/$LAST_DAY_DAY"
        LOG_FILES=$CURRENT_APP_PATH/$ANALYZED_FOLDER/$LAST_DAY_YEAR-$LAST_DAY_MONTH-$LAST_DAY_DAY"*"
        mv $LOG_FILES $CURRENT_APP_PATH/$ARCHIVE_FOLDER/$LAST_DAY_YEAR/$LAST_DAY_MONTH/$LAST_DAY_DAY
        ##Compress logs
        ZIPPED_FILE=$LAST_DAY_DAY".tar.gz"
        cd $CURRENT_APP_PATH/$ARCHIVE_FOLDER/$LAST_DAY_YEAR/$LAST_DAY_MONTH
        tar czf $ZIPPED_FILE $LAST_DAY_DAY
        rm -rf $LAST_DAY_DAY
done

exit 0
 

你可能感兴趣的:(脚本,F#,bash)