logrotate는 마지막 n개 로그만 압축합니다.

logrotate는 마지막 n개 로그만 압축합니다.

60일 동안 보관되도록 /var/log/messages를 매일 교체해야 하며, 마지막 30개 로그는 bzip2로 압축해야 합니다.

이것은 내 logrotate 구성입니다.

/var/log/messages {                                                                                              daily
    rotate 60
    postrotate
    /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true    
    endscript 
}

하지만 결과적으로 최근 60일의 압축되지 않은 로그가 유지됩니다. 추가하면 compress60개의 로그가 모두 압축됩니다.

그렇다면 최근 30개의 로그만 압축할 수 있는 방법이 있습니까?

답변1

logrotate가 직접 수행할 수 있는 옵션은 없다고 생각합니다. 단 하나의 관련 옵션은 delaycompress하나의 로그 회전 주기(귀하의 경우 하루)만큼 압축을 지연시키는 것입니다. 아마도 compresscmd쉘 스크립트를 작성하여 지금까지 가지고 있는 로그 파일 수를 확인하고 원하는 파일을 압축/압축 해제하여 옵션을 활용할 수 있습니다 .

cron또 다른 가능성은 스크립트를 실행하여 로그 파일을 확인하고 원하는 내용을 압축/압축 해제하도록 일일 작업을 예약하는 것입니다 .

관련 정보