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 

5 日目の zip ファイルと、それ以前の 4 日間の空のファイル、さらに空のファイルの zip ファイルが 4 つ表示されます。

前の 4 つのファイルを 1 つのアーカイブに圧縮して 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

( spongefrommoreutilsを使用して最後のログ ファイルを上書きします)

ただし、extension .gzログ ファイルに実際に.gz拡張子が付いていなければ役に立ちません。

関連情報