설정파일을 본다.
-----------------------------------------------------------------
centos[root /var/log]# vi /etc/logrotate.conf
centos[root /var/log]# vi /etc/logrotate.conf
# see "man logrotate" for details
2 # rotate log files weekly
3 weekly //일주일에 한번 백업 받겠다. 최소단위가 daily
4
5 # keep 4 weeks worth of backlogs
6 rotate 4 // 한달치 date만 백업받겠다. daily면 4일치만 보관.
7
8 # create new (empty) log files after rotating old ones
9 create
10
11 # uncomment this if you want your log files compressed
12 #compress // 압축하겠다. 주석처리 되었으니 압축 안하겠다.
13
14 # RPM packages drop log rotation information into this directory
15 include /etc/logrotate.d //이 폴더 안에 있는 것들도 백업해라.
16
17 # no packages own wtmp -- we'll rotate them here
18 /var/log/wtmp { // 요기 있는 파일을 이런 조건으로 백업한다. 괄호 안이 우선 적용
19 monthly // 달 단위로 백업해라.
20 minsize 1M // 이 사이즈가 되면 백업해라.
21 create 0664 root utmp //퍼미션 소유주 그룹을 이렇게 만들어라.
22 rotate 1
23 }
--------------------------------------------------------------------
rotate 4 의미는
2 # rotate log files weekly
3 weekly //일주일에 한번 백업 받겠다. 최소단위가 daily
4
5 # keep 4 weeks worth of backlogs
6 rotate 4 // 한달치 date만 백업받겠다. daily면 4일치만 보관.
7
8 # create new (empty) log files after rotating old ones
9 create
10
11 # uncomment this if you want your log files compressed
12 #compress // 압축하겠다. 주석처리 되었으니 압축 안하겠다.
13
14 # RPM packages drop log rotation information into this directory
15 include /etc/logrotate.d //이 폴더 안에 있는 것들도 백업해라.
16
17 # no packages own wtmp -- we'll rotate them here
18 /var/log/wtmp { // 요기 있는 파일을 이런 조건으로 백업한다. 괄호 안이 우선 적용
19 monthly // 달 단위로 백업해라.
20 minsize 1M // 이 사이즈가 되면 백업해라.
21 create 0664 root utmp //퍼미션 소유주 그룹을 이렇게 만들어라.
22 rotate 1
23 }
--------------------------------------------------------------------
rotate 4 의미는
1주일 후
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
그 다음 1주일 후
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
그 다음 1주일 후
messages.2 -> messages.3 로 백업하고
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
그 다음 1주일 후
messages.3 -> messages.4 로 백업하고
messages.2 -> messages.3 로 백업하고
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
그 다음 1주일 후
messages.4 -> messages.5 로 백업하고
messages.3 -> messages.4 로 백업하고
messages.2 -> messages.3 로 백업하고
messages.1 -> messages.2 로 백업하고
messages -> messages.1 로 백업하고
messages -> 0byte로 초기화
........... 하는데 messages.4 까지만 보관하겠다. 즉 5는 생성과 동시에 삭제. 또는 생성 안할 수도..? 여튼 5는 없다.
create 0664 root utmp 를 보면
-----------------------------------------------------------------
centos[root /root]# ls -l /var/log/wtmp
-rw-rw-r-- 1 root utmp 127872 10월 18 10:26 /var/log/wtmp
centos[root /root]# ls -l /var/log/wtmp
-rw-rw-r-- 1 root utmp 127872 10월 18 10:26 /var/log/wtmp
------------------------------------------------------------------
퍼미션이나 소유주가 명령대로 설정되어 있다.
include /etc/logrotate.d
예를 들어 하나를 보자.
------------------------------------------------------------------
centos[root /etc/logrotate.d]# cat vsftpd.log
/var/log/vsftpd.log {
# ftpd doesn't handle SIGHUP properly
nocompress // 압축하지마.
missingok // 혹시 파일이 없어도 그냥 넘어가. nomissingok가 기본.
}
/var/log/xferlog {
# ftpd doesn't handle SIGHUP properly
nocompress
missingok
}
---------------------------------------------------------------
# ftpd doesn't handle SIGHUP properly
nocompress
missingok
}
---------------------------------------------------------------
별다른 설정이 없으니 주 1회, 한달치... 등등 위에 있는 설정을 따른다.
실행방법
----------------------------------------------------------------
centos[root /var/log]# logrotate /etc/logrotate.conf
----------------------------------------------------------------
----------------------------------------------------------------
직접 실행해야 하면 번거로우니 cron...에 등록되어 있다.
----------------------------------------------------------------
centos[root /etc]# ls cron.daily/
00webalizer 0logwatch cups makewhatis.cron prelink tmpwatch
0anacron certwatch logrotate mlocate.cron rpm
------------------------------------------------------------------
centos[root /etc]# ls cron.daily/
00webalizer 0logwatch cups makewhatis.cron prelink tmpwatch
0anacron certwatch logrotate mlocate.cron rpm
------------------------------------------------------------------
실습해보자.
-------------------------------------------------------------------
centos[root /etc/logrotate.d]# vi test.log
1 /var/log/newtest {
2 daily
3 compress
4 rotate 2
5 missingok
6 sharedscripts // end 사이에 적는 명령어를 실행한다.
7 postrotate // post 니까 백업후 명령어를 실행해라.
8 service vsftpd restart 2> /dev/null // 에러는 출력하지마.
9 touch /tmp/test.txt
10 endscript
11 }
1 /var/log/newtest {
2 daily
3 compress
4 rotate 2
5 missingok
6 sharedscripts // end 사이에 적는 명령어를 실행한다.
7 postrotate // post 니까 백업후 명령어를 실행해라.
8 service vsftpd restart 2> /dev/null // 에러는 출력하지마.
9 touch /tmp/test.txt
10 endscript
11 }
ifempty // 용량이 0이여도 백업받겠다.
-------------------------------------------------------------------
-------------------------------------------------------------------
다른 파일을 살펴보자.
-------------------------------------------------------------------
centos[root /etc/logrotate.d]# vi httpd
1 /var/log/httpd/*log {
2 missingok
3 notifempty
4 sharedscripts
5 postrotate
6 /sbin/service httpd reload > /dev/null 2>/dev/null || true
7 endscript
8 }
-------------------------------------------------------------------
/dev/null 2>/dev/null 실행 결과나 에러나 둘다 출력하지 마숑.
centos[root /etc/logrotate.d]# vi httpd
1 /var/log/httpd/*log {
2 missingok
3 notifempty
4 sharedscripts
5 postrotate
6 /sbin/service httpd reload > /dev/null 2>/dev/null || true
7 endscript
8 }
-------------------------------------------------------------------
/dev/null 2>/dev/null 실행 결과나 에러나 둘다 출력하지 마숑.
|| true || 참이 될때까지 실행. &&는 거짓이 될때까지 실행.
댓글 없음:
댓글 쓰기