新しく作成されたファイルをディレクトリに自動的に圧縮できますか?

新しく作成されたファイルをディレクトリに自動的に圧縮できますか?

コンテキスト

実行中に多くの情報を記録するために正しく設計されていないJavaアプリケーションを使用する必要があります。標準使用量では、1時間あたり100MBのログが生成されます。

履歴ログは不要で、現在のlogrotateユーティリティが十分に頻繁に実行されていないため、これに従えないようです。このアプリケーションはプライベートソースで、ログサイズは約36MBです。

私のLinuxディストリビューションはRHEL7です。

質問

ログを圧縮して回転させ、無駄なスペースを減らしたいです。

  1. アプリケーションがログを新しいファイルに分割したため、ディレクトリに新しく作成されたファイルを自動的に圧縮できますか?
  2. Assessmentor-cli.X.log形式のすべてのファイルを自動的に削除できますか?ここで、X は 5 より大きい数値です (たとえば、5 つの最新ログのみを保持)。

logrotateファイルを使用した試みは次のとおりです。

# cat /etc/logrotate.d/cis_assessor
/usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/assessor-cli.log {
        missingok
        notifempty
        compress
        rotate 5
        size 30M

このログローテーション操作が実際に有効になるには、サイズが30 MBから36 MBの間のログをキャプチャする必要があります。これは10秒かかります。だからlogrotateなしでファイルを圧縮して削除する手動パスについて尋ねることです。

ベストアンサー1

アプリケーションがログを新しいファイルに分割したため、ディレクトリに新しく作成されたファイルを自動的に圧縮できますか?

はい。新しく作成されたファイルを見つけるために新しいファイルのディレクトリを監視できるものを使用してください(良いentr)

したがって、次のlogrotate構成を作成します(/etc/logrotate.d/newlogrotateconf)。

/usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/assessor-cli.log {
        missingok
        notifempty
        compress
        rotate 5
}

その後、entrディレクトリを繰り返して/logrotateにバインドします。inotifyepoll

echo -n /usr/share/foreman-proxy/Ansible/CIS/audit/Assessor-CLI-4.0.2/logs/
  | ./entr -dnc logrotate --force /etc/logrotate.d/newlogrotateconf

おすすめ記事