logrotate 주간 보관으로 일일 파일이 비워집니다.

logrotate 주간 보관으로 일일 파일이 비워집니다.

내 목표는 4일 분량의 로그 파일을 유지하여 5일째에 4개의 로그 파일이 모두 포함된 zip 파일이 생성되는 것입니다. 지금까지 생성된 4개의 로그 파일이 삭제됩니다.

이것은 나의 logrotate.conf:

/home/ubuntu/logs/server.log {
    daily
    missingok
    rotate 5
    compress
    create
    dateext
    dateyesterday
    dateformat .%Y-%m-%d
    extension .gz
}

다음과 같은 항목이 있습니다 crontab.

2 0 * * * /usr/sbin/logrotate /home/ubuntu/logrotate.conf --state /home/ubuntu/logrotate.state 

지난 4일 동안의 빈 파일과 빈 파일이 포함된 4개의 zip 파일이 더 포함된 5일째의 zip 파일이 표시됩니다.

이전 4개 파일을 하나의 아카이브와 zip으로 압축한 후 제거하라는 뜻이 rotate 5아닌가요 ?compress

답변1

rotate그리고 compress독립적이다. compress회전된 각 로그 파일을 압축하고 rotate유지할 회전된 로그 파일 수를 설정합니다. 이들을 함께 사용한다고 해서 순환된 로그 파일이 결합되고 압축된다는 의미는 아닙니다.

당신이 할 수 있는 일은 post-rotate다음과 같은 스크립트를 사용하는 것입니다:

zcat /home/ubuntu/logs/server.log.*.gz |
  gzip | sponge /home/ubuntu/logs/server.log.$(date -d "now - 5 days" +%Y-%m-%d).gz

( spongefrom을 사용하여 moreutils마지막 로그 파일을 덮어씁니다)

즉, extension .gz로그 파일에 실제로 확장자가 없으면 쓸모가 없습니다 .gz.

관련 정보