카테고리 없음

[shell] 기간 지정하여 로그파일 백업 및 삭제 스크립트

너머스고(numusgo) 2024. 2. 28. 21:50

 

 

web/was/db/기타/솔루션을 운영하다 보면 파일 시스템이 full차는 경우가 있다.

 

web/was로그에 대해서는 시스템 지침에 따라 3개월 또는 6개월 보관을 해야 하는 경우가 있다. 삭제는 못하고 용량은 차고

그럴 때 아래 shell을 응용하여 로그관리를 하면 새벽에 나와서 장애 조치를 안 해도 된다.

 

로그백업 shell  설명

 ㅇ 기준 폴더의 개별 폴더들의 로그를 정리하는 쉘스크립트이다.
 ㅇ 3일 지난 파일을 압축
 ㅇ 180일 지난 압축파일 삭제

 

 
vi log_backup.sh

#!/bin/sh
# 기준 폴더
LOG_PATH=/logs
# 기준 폴더 안의 개별 폴더 목록
SVC_TYPE_ARRAY=("acs" "abccard")

# 로그정리 정리 로그(최근 로그만 남김)
LOG_FILE=${LOG_PATH}/log_clean.out
DAY=$(date +%Y-%m-%d --date '3 days ago')
date > $LOG_FILE

for svcType in "${SVC_TYPE_ARRAY[@]}"
do
  # log zip
  tar -czvf $LOG_PATH/$svcType/$svcType.$DAY.tar.gz $LOG_PATH/$svcType/*$DAY*.log >> $LOG_FILE
  rm -f $LOG_PATH/$svcType/*$DAY*.log
  echo $svcType' done' >> $LOG_FILE

  # old file delete, 180일 지난 파일은 삭제한다. 
  for i in $(find $LOG_PATH/$svcType -name "*.tar.gz" -mtime +180)
  do
    FILE=`echo ${i}`
    echo $FILE >> $LOG_FILE
    rm -f ${FILE}
    echo $svcType' rm done' >> $LOG_FILE
  done
done

chmod 755 log_backup.sh

 

크론탭 (CRON)등록


# 보통 스케쥴러 작업을 수행하는 역할이며, crontab 파일에서 관리한다. (경로 : /etc/crontab)

# crontab 형식 : 분 시 일 월 요일 사용자 실행명령

# 요일은 0(일요일) ~ 6(토요일)

# '*' 는 매월이나 모든 요일 의미

ex> 00 10 5 * * /data/log/log_backup.sh

: 매월 5일 00시 10분에 /data/log/log_backup.sh 로그 백업 스크립트를 수행한다.

 

출처 : https://peterica.tistory.com/141