회원가입

로그인

아이디
비밀번호
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
958578/961000
96%
McNorton & Education Lab.
Director
댓글
0
댓글 쓰기
권한이 없습니다.

번호 제목 조회 수 날짜
371 White Hacking 웹 해킹 4/15 (file upload 알고리즘 시의 주의할점 -1-) 8016 02.10.22
370 Windows/DOS 프로그램 추가/제거 실행시 ... line 472 에러 6191 02.11.05
369 소프트웨어안내 아웃룩 실행시 MSN 자동실행 막기 5692 02.11.13
368 오피스웨어활용 엑셀, 수우미양가 성적산출 서식 10783 02.12.16
367 서버운영 ASP 페이지의 ODBC관련(80004005) 오류 10371 02.12.18
366 소프트웨어안내 Favorite폴더에 대하여 (3) 5768 02.12.23
365 Unix/Linux [아파치로그강좌1] cronolog를 이용하여 아파치 Log 분할하기 7748 03.03.04
364 Unix/Linux - 가 파일명 맨 앞에 들어간 파일 삭제하기 10293 03.03.14
363 컴퓨터바이러스 트로이 목마가 사용하는 포트 리스트 45773 03.03.16
362 XE 맥노튼님 대문 꾸미기 노하우를 배우고 싶어요... (2) 20184 03.03.23
361 주변기기/네트워크장비 사운드블래스터 영문판/한글판 8692 03.03.23
Unix/Linux [아파치로그강좌2] crontab 을 이용해 주기적으로 압축하기 18676 03.03.24
359 Unix/Linux [아파치로그강좌3] 일주일이 지난 로그 자동 삭제하기 18199 03.03.24
358 Unix/Linux [아파치로그강좌4] 적용 결과 16970 03.03.27
357 정보보호/보안 MS-Office XP 사용자는 SP1 설치하세요 7847 03.04.16
356 정보보호/보안 MS-Office XP 사용자는 SP2로 업데이트하세요. 7227 03.04.16
355 정보보호/보안 MS-Office XP 사용자는 다음의 보안 패치를 설치하세요. 7555 03.04.16
354 White Hacking 악성 스크립트로 인한 피해를 막읍시다. 5534 03.04.17
353 PC/Notebook 단면램? 양면램? 13937 03.04.21
352 XE 특정 사이트의 바뀐 내용이 표시되지 않습니다. 4988 03.04.21

로그인

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