私の目標は、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
( sponge
frommoreutils
を使用して最後のログ ファイルを上書きします)
ただし、extension .gz
ログ ファイルに実際に.gz
拡張子が付いていなければ役に立ちません。