我的目標是維護 4 天的日誌文件,以便在第五天創建包含所有四個日誌文件的 zip 文件。迄今為止創建的四個日誌檔案將被刪除。
這是我的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
我看到第五天的 zip 檔案以及前四天的空白檔案和另外四個空檔案的 zip 檔案。
不是rotate 5
並且compress
應該意味著,將前 4 個檔案壓縮為一個存檔和 zip 後將其刪除嗎?
答案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
frommoreutils
覆蓋最後一個日誌檔)
也就是說,extension .gz
除非您的日誌檔案實際上有.gz
擴展名,否則這是沒有用的。