회원가입

로그인

아이디
비밀번호
ID/PW 찾기
아직 회원이 아니신가요? 회원가입 하기

[아파치로그강좌2] crontab 을 이용해 주기적으로 압축하기

Profile
:맥노턴
앞서 cronolog 를 이용해 로그 파일을 일 단위로 분할하는 방법을 알아보았다.

이렇게 분할된 로그파일을 주기적으로(하루에 한번) tar 의 -z 옵션을 이용해 압축하고자 한다면 어떻게 하면 좋을까?


앞서 cronolog 명령에 대한 설명을 듣고 설정한대로
/var/log/httpd/ 디렉토리에 20030323_access.log 와 20030323_error.log 의 형태로 로그파일이 매일매일 저장되고 있다고 보고...


아래의 내용으로 펄 스크립트 파일을 만든다.
(펄을 공부한지가 너무 오래되어서 다 까먹었다. ㅡ.ㅡ;)

#!/usr/bin/perl

sub getDateYMD {
local ($timestamp) = @_;

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime($timestamp);
$year += 1900;
$mon = sprintf("%02d",$mon+1);
$mday = sprintf("%02d",$mday);
$dateYMD = $year.$mon.$mday;

return $dateYMD;

}

$logpath = "/var/log/httpd/";

$yesterday = time() - (60 * 60 * 24);
$dateYesterday = &getDateYMD($yesterday);

if (-e "$logpath${dateYesterday}_access.log" || -e "$logpath${dateYesterday}_err
or.log") {

        $command = "cd $logpath ; tar -cvz --remove-files -f ${dateYesterday}.tg
z ${dateYesterday}_*";

        exec($command);

} else {

        print "Source Not found\n";

}


다 만들고 나서 저장한다. 어디에 저장할지는 알아서 결정할 일이지만, 편의상 apache 가 설치되어 있는 bin 디렉토리에 하면 편리할 것 같아
/usr/local/etc/httpd/bin/logcompress.daily 로 저장했다.

저장한 뒤에는

# chmod 755 logcompress.daily

해서 실행가능한 권한을 주어야 한다.


이 스크립트는 생각보다 간단하다. 어제날짜_access.log 와 어제날짜_error.log 파일이 있는지 검사하여 파일이 둘 다 없으면 Source Not found 를 출력하고 끝낸다.

그렇지 않고, 어제 생성된 로그파일이 존재한다면.. tar 명령을 이용해 어제날짜.tgz 파일로 묶는 것이다.

그런데, 이걸 매일매일 손으로 실행시켜주어야 하느냐?
cron을 이용하면 자동으로 실행할 수 있다.

# vi /etc/crontab

하여 crontab 파일을 열어보자. 이곳에 주기적으로 실행해야할 내용들이 들이 있다. 내용을 보면,

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly


와 같이 되어있을 것이다.

맨 마지막 줄에 다음과 같이 삽입하자.

05 00 * * * root /usr/local/etc/httpd/bin/logcompress.daily



cron의 명령 순서는 띄어쓰기로 구분되며,

분 시 일 월 년 권한자 명령어

순으로 되어 있다. 추가할 명령을 해석해보면

05분 00시 매일 매월 매년 root권한 /usr/local/etc/httpd/bin/logcompress.daily명령실행


이 된다. 매일 00시 05분에 어제 날짜의 로그를 압축해서 보관하는 것이다.

crontab 에 매일 실행될 수 있도록 명령을 추가했으면,

# /etc/rc.d/ini.d/crond restart


해서 cron 데몬을 재시작하자.

이제 매일매일 자동으로 어제의 로그가 압축저장된다. 일반 로그파일을 tar 의 -z 명령으로 압축해서 보관하면 용량이 1/10 로 줄어든다. 접속량이 많을 경우 하루에도 100 MB의 로그가 생성된다. 압축하면 10MB로 줄어들어 공간을 확보할 수 있게 된다.

압축저장으로 공간을 아끼자.

:맥노턴.

Profile
:맥노턴
레벨 30
955743/961000
91%
McNorton & Education Lab.
Director
댓글
0
댓글 쓰기
권한이 없습니다.

번호 제목 조회 수 날짜
151 Windows/DOS 최근 xp 패치 설치후 느려지셨다면.... 5636 03.04.29
150 Windows/DOS 윈도우 2000 프로 종료가 안됩니다. (2) 5770 03.04.29
149 XE 최근 게시물 추출에 대한 질문입니다.. 6049 03.04.29
148 레퍼런스 Flash + 웹서버 연동 21468 03.04.28
147 레퍼런스 성공과 실패를 결정하는 1%의 프로그래밍 원리 39367 03.04.28
146 정보보호/보안 Q811493-커널 메시지처리시 발생하는 버퍼오버런으로 인해... 8272 03.04.21
145 서버운영 제로보드.. 그리고 Mysql 6209 03.04.21
144 소프트웨어안내 메인페이지로 등록한 적이 없는데...? 4997 03.04.21
143 서버운영 네트워크상에서 실수로 공유폴더를 지웠을 때...(ㅠ.ㅠ) 8939 03.04.21
142 서버운영 mySQL의 망가진 테이블 복구법 (1) 26926 03.04.21
141 PC/Notebook 메모리(RAM)를 업글할려고 하는데 20085 03.04.21
140 XE 특정 사이트의 바뀐 내용이 표시되지 않습니다. 4988 03.04.21
139 PC/Notebook 단면램? 양면램? 13937 03.04.21
138 White Hacking 악성 스크립트로 인한 피해를 막읍시다. 5534 03.04.17
137 정보보호/보안 MS-Office XP 사용자는 다음의 보안 패치를 설치하세요. 7555 03.04.16
136 정보보호/보안 MS-Office XP 사용자는 SP2로 업데이트하세요. 7227 03.04.16
135 정보보호/보안 MS-Office XP 사용자는 SP1 설치하세요 7847 03.04.16
134 Unix/Linux [아파치로그강좌4] 적용 결과 16970 03.03.27
133 Unix/Linux [아파치로그강좌3] 일주일이 지난 로그 자동 삭제하기 18199 03.03.24
Unix/Linux [아파치로그강좌2] crontab 을 이용해 주기적으로 압축하기 18676 03.03.24

로그인

아이디
비밀번호
ID/PW 찾기
아직 회원이 아니신가요? 회원가입 하기