OS

Crontab을 이용한 로그 백업

gregorio 2018. 7. 17. 15:01

Apache에서 rotatelogs를 이용하여 로그 파일을 매일 Rotation할 수 있다.

그러나 로그 파일이 날찌별 동일 디렉토리에 생성되기 때문에  월별로 디렉토리를 생성하여 로그 백업이 필요한 경우 사용할 수 있다.


먼저 shell을 작성한다.


■logback.s


#!/bin/sh


CUR_DATE=`date +"%Y%m%d"`

LOG_FILE=log_cron_$CUR_DATE.log

LOG_HOME=/logs001/apache

LOG_BACK_DIR=$LOG_HOME/`date +"%Y%m"`

ACCESS_LOG_FILE=$LOG_HOME/access_$CUR_DATE.log

ERROR_LOG_FILE=$LOG_HOME/error_$CUR_DATE.log

HEALTH_LOG_FILE=$LOG_HOME/health_$CUR_DATE.log


#Make log backup directory

if [ ! -d $LOG_BACK_DIR ]; then

    echo "$LOG_BACK_DIR is created" >> $LOG_FILE

    mkdir $LOG_BACK_DIR

fi


#Move log file to backup directory

for entry in $LOG_HOME/*

    do

        if [ ! -d $entry ]; then

            if [ $entry != $ACCESS_LOG_FILE ] &&

               [ $entry != $ERROR_LOG_FILE ] &&

               [ $entry != $HEALTH_LOG_FILE ]; then

                echo "$entry is moved to $LOG_BACK_DIR" >> $LOG_FILE

                #mv $entry $LOG_BACK_DIR

            fi

        fi

    done 


Shell  작성이 완료되었으면 Crontab에 등록하여 주기적으로 shell을 실행하도록 한다.


crontab -e 명령을 이용하여 cron에 Job을 등록한다.



10 0 * * * /engn001/script/logback.sh 


매일 0시 10분에 logback.sh가 실행된다.


Crontab 등록 완료되었으면 crontab -l을 이용하여 등록된 내용을 확인한다.