본문 바로가기

Linux

파일크기 체크하여 로그백업

아파치 로그 파일 크기가 2기가 이하밖에 지원하지 않아서 1기가 이상되면 백업파일 만들도록 shell script 만들었다.

* 파일크기 합계 구하기 :  du -s *2011*tar | awk '{total+=$1} END {print total}'

 #!/bin/sh

###############################################################
# 로그파일 백업
#   로그파일 크기가 1기가 넘어가면 자동 백업한다.
###############################################################
fn_backup_logFile() {
    log_file=$1

    log_file_size=`ls -al $log_file | awk '{print $5}'`


    if [ "$log_file_size" -gt "1073741824" ] ; then
        # 1 ~ 999 까지 loop돌면서 이미 백업된파일이 있는지 검사한다.
        i=1
        while [ $i -le 999 ]
        do
            if ! [ -f $log_file.$i ] ; then
                backup_file=$log_file.$i
                break
            fi
            i=`expr $i + 1 `
        done

        `cp $log_file $backup_file`
        `cat /dev/null > $log_file`
    fi
}

# 로그파일 백업 함수 실행
fn_backup_logFile "/home1/user/apache/logs/access_log.`date +%Y-%m-%d`"


위 파일을 backupLog.sh 로 만든후에 chmod 755 backupLog.sh 로 실행권한 준다.

 

그 이후에 crontab -e로 크론탭에 5분마다 한번씩 실행되도록 등록한다.

(만일 아파치가 root 권한으로 설치되었다면 root 권한으로 크론탭 등록해야함)

*/5 * * * * /home1/user/backupLog.sh

 

 

쉘 스크립트 보면 알겠지만

access_log.2010-01-01.1

access_log.2010-01-01.2

access_log.2010-01-01.3

이와 같이 백업파일 만들고(1 ~ 999까지) 원래 로그파일의 내용은 0byte로 싹 다 지워버린다.