IT/WEBWAS

간편 Log rotation 처리 스크립트_bash

동구멍폴로 2022. 10. 3. 20:24
반응형

특정 파일에 계속해서 로그를 쌓는 경우, 일정한 시점에 log를 백업 및 rotation 시켜주는 것이 필요하다.

로그 파일을 mv 명령어를 사용해 옮기는 경우는, 실제 프로그램에서 대상 로그 파일이 없어진 것으로 인식해 오류를 발생시킬 수도 있어, 다음의 방법을 소개한다.

 

 아래의 bash shell script 를 통해 로그를 복사 후 압축하고 초기화 시킨다.

매일매일 백업을 수행하는 경우 간단하게 crontab 을 등록해 매일 00시 혹은 01시 경에 로테이션 되도록 설정한다.

(*단, 해당 스크립트는 간단하게 파일을 복사한 뒤 압축하는 내용이므로, 복사할 만큼의 용량은 필요하다.

파일시스템 용량 확보에 주의한다.)

 

스크립트는 다음과 같다.

vi rotatelog.sh
---- 아래 스크립트 내용 입력 후 :wq! ----
chmod 750 rotatelog.sh
TODAY_DATE=`date "+%Y%m%d"`
cp -p /logs/now.log /logs/backup_${TODAY_DATE}.log
cat /dev/null > /logs/now.log
gzip /logs/backup_${TODAY_DATE}.log

(rotatelog.sh : /logs 하위에 위치, /logs 하위의 now.log를 backup_압축일자.log.gz 으로 압축하고 초기화 하는 내용의 스크립트임.)

 

crontab 은 다음과 같이 설정한다. (매일 1시에 로테이션 스크립트 수행)

00 01 * * * /logs/rotatelog.sh

 

반응형