IT_Server/UNIX · Solaris

웹로그 지우기

JJun ™ 2008. 2. 3. 22:41

웹로그가 많이 쌓이게 되면 접속로그를 기록하는데 시간이 오래 걸리기 때문에

웹 접속 역시 더디게 됩니다. 이럴 때에는 필요없는 로그를 지워줌으로써

속도의 향상을 기대할 수 있습니다.

웹로그는 일반적으로 소스로 설치를 했을때에는 /usr/local/apache/logs

디렉토리안에 존재 하게 되며, rpm으로 설치시에는 /var/log/httpd안에

기록이 되게 됩니다.

로그는 접속기록및 전송데이터등을 분석할수 있는 자료가 되므로, 

무턱대고 지우기 보다는 일정한 기간동안은 로그를 보관하는 것을 권고 합니다.

다음과 같은 스크립트로 하루하루 로그를 백업함으로써, 로그로 인한

웹 접속장애도 없애고, 로그 data를 일정동안 보관함으로써 나중에

로그 분석으로도 사용할수 있을 것입니다.

아래 쉘 프로그래밍은 날마다 로그를 백업하며, 그 백업분을 일주일동안

보관하는 프로그램으로서 이것을 cron에 등록시켜 사용하시면 됩니다.

/etc/crontab 에 다음과 같이 추가합니다.
===========================
00 0 * * * root /usr/local/apache/logs/logbackup.sh
===========================
# 아래의 프로그램을 logbackup.sh란 이름으로 저장하고, /usr/local/apache/logs/ 디렉토리 안에

  넣었을때의 예제임!!

# 참고로, 접속자가 많은 웹사이트의 경우 하루분량의 접속로그의 용량이
   상당히 클수 있으므로 자신의 서버 하드디스크의 용량을 참고하여
   쉘 프로그래밍을 수정하여 사용하도록 합니다.

=============================
#hostway.kh
#!/bin/sh

rdate -s time.nuri.net

today=$(date +%y-%m-%d)
rmday=$(date +%y-%m-%d --date '7 days ago')

defaultdir="/usr/local/apache/logs"
cd $defaultdir

rm -rf $rmday
mkdir $today

for w in $(ls | grep "access_log")
do
        cp $w $today
        echo "##$today##" > $w
done

for z in $(ls | grep "error_log")
do
        cp $z $today
        echo "##$today##" > $z
done

======================