アプリが書き込むログディレクトリがあります。次のようなログファイルが作成されます。
2015-01-22-10-full-activity.log
2015-01-22-11-full-activity.log
2015-01-22-12-full-activity.log
2015-01-22-13-full-activity.log
最新のファイルを除くすべてのファイルを圧縮し、3日より古いファイルを削除したい。
Logrotateでこれを実行できると思いましたが、理解できません。アクティビティログに時間の名前を付けていることが原因である可能性があります。
何か案は?
名前に日付が含まれるファイルを既に作成している場合、logrotateは答えではありません。これは、アプリケーションが常に同じログファイル(例:/var/log/app/output.log)に書き込むという考えに基づいており、logrotateがファイルの名前の変更/圧縮を行い、アプリに再度開くように指示します。元のターゲットファイルを再度。
この場合、おそらく-mtimeで「find」を使用するcronジョブのペア。例:
1 0 * **ルート検索/path/to/logs/*.log-mtime +1 -daystart -exec gzip {} \;
2 0 * **ルート検索/path/to/logs/*.log.gz-mtime +3 -daystart -delete
-mtimeの数値と-daystartの使用(またはそうでない)をいじって、必要な正確な結果を取得することをお勧めします(「日数」のカウント方法などによって異なります)。