8

logrotate を取得して X 日前に変更されたファイルのみを圧縮する方法はありますか (例: mtime +2)

4

3 に答える 3

13

1 つのオプションとして、 を使用logrotateして別の拡張子にローテーションし、次に を使用logrotateして圧縮ファイルにローテーションすることができます。

/var/log/raw.log {
  daily
  nocompress
  extension .old
  }

/var/log/*.old {
  daily
  compress
  delaycompress
  rotate 10
  }

このルーブ・ゴールドバーグの策略は、次の結果をもたらします。

raw.log
raw.log.old
raw.log.old.1
raw.log.old.2.gz
raw.log.old.3.gz

したがって、圧縮されていない 2 日間のアーカイブされたログがあります。

于 2012-04-27T02:44:16.640 に答える
5

delaycompress を使用してもう 1 サイクル待つことができます。基本的に、毎日ローテーションすると、昨日のログが非圧縮のままになります。

それに加えて、logrotate を使用せずにファイルを圧縮し、bash スクリプトを作成して 1 日 1 回実行し、特定の日付より古いすべてのファイルを圧縮することもできます。

個人的に気に入っている bash のチュートリアルは次のとおりです: http://www.linuxconfig.org/Bash_scripting_Tutorial

于 2010-12-21T02:27:50.840 に答える
-1

以下のようなことはできませんか?

/var/log/access.log {
    daily
    nocompress
}

/var/log/access.7.log {
     daily
     compress
}

それはあなたに次のようなものを与えると思います

access.log
access.1.log
access.2.log
access.3.log    
access.4.log
access.5.log
access.6.log
access.7.log.gz
access.8.log.gz
access.log
于 2012-05-04T19:41:03.643 に答える