/var/log/messages を毎日ローテーションして 60 日間保存する必要があります。最後の 30 件のログは bzip2 で圧縮する必要があります。
これは私のlogrotate設定です:
/var/log/messages { daily
rotate 60
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
ただし、結果として、圧縮されていない最後の 60 件の毎日のログが保持されます。 add の場合はcompress
、60 件のログすべてが圧縮されます。
では、最後の 30 件のログだけを圧縮する方法はありますか?
答え1
logrotate で直接これを行うオプションはないと思います。関連するオプションは、delaycompress
圧縮を 1 回のログ ローテーション サイクル (この場合は 1 日) 遅らせることだけです。おそらく、compresscmd
シェル スクリプトを記述して、これまでにいくつのログ ファイルがあるかを確認し、必要なファイルを圧縮/解凍することで、このオプションを利用できます。
もう 1 つの可能性は、cron
ログ ファイルをチェックし、必要なものを圧縮/解凍するスクリプトを実行する毎日のジョブをスケジュールすることです。