logrotate 每週歸檔清空每日文件

logrotate 每週歸檔清空每日文件

我的目標是維護 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

(使用spongefrommoreutils覆蓋最後一個日誌檔)

也就是說,extension .gz除非您的日誌檔案實際上有.gz擴展名,否則這是沒有用的。

相關內容