로그파일 자동 백업 스크립트

방문자수랑 각종 분석(?)용으로 쓰일 로그파일이 생각보다 용량이 큽니다. 이번엔 jMeter로 이런저런 삽질을 해서 6일만에 45메가 가량 커졌지만 이전 기록을 근거로 약 한달 채우면 150메가 가량 크기가 되더군요.

그냥 놔두면 무한대(?)로 켜저서 수기가가 될수 있기 때문에 매달 1일 0시가 되는 시점에 파일 압축하고 종전파일은 리셋하는 방법을 찾아봤습니다.

보통 검색해보면 logrotate 라는 프로그램을 쓰길래 저도 좀 찾아보니 그냥 스크립트 만들어서 크론탭에 넣는거랑 큰 차이가 없더군요. (어차피 저 logratate도 크론에 의해 호출됨)

그래서 즉석에서 쉘스크립트 작성법을 검색해서 하나 만들어 봤습니다.

#!/bin/bash

backupPath=/home/linsoo/server/backup/
logPath=/home/linsoo/server/logs/
targetAccessLog=wp.access.log
targetErrorLog=error.log
backupDate=$(date +%Y%m%d_%H%M%S)
backupAccessLogName=$backupDate"_"$targetAccessLog
backupErrorLogName=$backupDate"_"$targetErrorLog

cp  $logPath$targetAccessLog $logPath$backupAccessLogName
cat /dev/null > $logPath$targetAccessLog
cp  $logPath$targetErrorLog $logPath$backupErrorLogName
cat /dev/null > $logPath$targetErrorLog

zip -j $backupPath$backupDate'_backupLog.zip' $logPath$backupAccessLogName $logPath$backupErrorLogName
rm  $logPath$backupAccessLogName
rm  $logPath$backupErrorLogName

처음 서버 세팅시 goaccess 쉽게 실행할려고 로그파일을 홈폴더로 옮겼는데 지금 생각해보니 goaccess 관련 스크립트를 만들면 되는데 라는 생각을 이 글을 쓰면서 하고 있습니다 ㅋㅋㅋ

스크립트 실행시 액서스로그랑 에러로그를 “년월일_시분초_로그이름” 이런식으로 파일이름을 바꿔서 년월일_시분초_backupLog.zip으로 압축하고 원래 로그파일은 내용을 비우는 방식입니다.

이 스크립트를 저장하고 실행권한을 주고 크론탭에 등록합니다.

$ sudo vi /etc/crontab

파일을 열고 맨 아래에 다음과 같이 추가합니다.

0 0 1 * * root /home/linsoo/server/autoBackupLog.sh

그리고 cron 서비스를 다시 시작합니다.

sudo service cron restart

매달 1일 0시 0분에 백업을 시작할것입니다. 참고로 크론탭 등록할때 root로 안하면 로그 0바이트로 리셋하는게 안먹더군요.


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다