プロが教える店舗&オフィスのセキュリティ対策術

logrotateの圧縮に条件を指定できますか?

logrotateのファイル圧縮ですが、ローテーションした
logファイルを常に圧縮するのではなく、
10世代以前のファイルは圧縮するといったことは可能ですか?
可能でしたら、その設定方法も教えていただけますでしょうか?

Cent OS 5.4
logrotate 3.7.4 を使っています。

squidのログファイルを管理したいのですが、
圧縮してしまうと分析のためのツールが使えず、
その都度展開する必要があります。
なので、一週間分は圧縮せず、それより古い分は
圧縮してしまおうと思うのですが方法が見つかりません。
(圧縮したままでも使える分析ツールは見つかりましたが
機能が不満でした。)

よろしくお願いいたします。

A 回答 (2件)

現在のsquidのlogrotate.dの設定や、ロギングされているディレクトリやファイルがわからないのであくまでサンプルですが


/etc/logrotate.d/squid

/var/log/squid/* {
daily
rotate 50
missingok
postrotate
/usr/sbin/squid -k rotate
find /var/log/squid/* -type f -mtime +10 -exec gzip {} \;
endscript
}

あたりでどうでしょうか?
(検証はしていません)
ローテートは1日1回で50ファイル(50日間)保存するが、10日以降のログに対してはgzipを実行します(するはずです)。
    • good
    • 0
この回答へのお礼

ありがとうございます。
恥ずかしいことにコマンド部分の意味が分らないのですが、
仰るとおりに動作するならばまさに希望通りのものです。

なるべく早く試してみます。

お礼日時:2010/02/12 20:10

たぶんlogrotateだけではできないのではないでしょうか。


delaycompressというオプションがありますが、次回ローテート時には圧縮されてしまいます。
logrotateでは圧縮せず、下記のようなスクリプトを作成してcronで圧縮するのが現実的ではないかと思います。

/usr/bin/find /var/log -type f -name "*.log" -mtime +10 -exec /usr/bin/gzip {} \;
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

スクリプトがさっぱりわからないので
これから勉強してみます。

お礼日時:2010/02/12 19:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!