내 목표는 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
( sponge
from을 사용하여 moreutils
마지막 로그 파일을 덮어씁니다)
즉, extension .gz
로그 파일에 실제로 확장자가 없으면 쓸모가 없습니다 .gz
.