[PREVIOUS CHAPTER] [NEXT CHAPTER]
5 Expire (一定日数より古いファイルは消す)とNewSyslog


この章は「古いファイルを自動的に消す」「ローテーションしながら古いファ
イルは消えていく」動作について解説します。


5.1	Introduction

Expire(一定日数以上古いファイルを消去する方法)は従来 HOOK をかけるやり
方で実装されていましたが、正式なライブラリとして使えるようにしました。
別に中身は変わっていません。単にHOOKを書かなくても良くなったということ
だけです。


5.2	自動アーカイブと自動 expire 

『アーカイブ』はメール一通一通ではなくある程度の数を一つにまとめて保存
する方法のことを意味しています。$DIR/spool に一通ずつためるのもアーカ
イブという概念だとは思いますが、このドキュメントでは区別しています。

手動でアーカイブ作成や古い記事の削除をするのがある意味で安全ですが、
FML に自動でそれらを行なわせることもできます。$USE_EXPIRE (古い記事の
削除)と $USE_ARCHIVE (アーカイブの作成) という変数を 1 にするとFMLがアー
カイブとexpireを行ないます。

expire と アーカイブ は相反する概念です。2つを同時におこ名和させる場
合はパラメータの選び方に要注意です。デフォールトはそれを考慮した数値に
なっているため、少しDISK効率が悪いかもしれません。

「絶対に記事はうしなわれてはいけない」という強い要求がある場合に 
「expire しつつアーカイブも作ることを全自動で行なう」ことは推奨できま
せん。というのはだれかがOSのtarやgzipを間違えて入れ換えたとかいう場合
を想定してみると危険性がわかります。expire はそういうものに依存してい
ないの普通に動いて記事を消していきますが、アーカイブは作成されなくなっ
てしまいます。よって
	『自分の設定は万全、大丈夫』
	『うちのOSはそんなことはしない、大丈夫』
	『まぁこのMLの記事はちょっとくらい失われてもOK』
など容認できる必要があります。

アーカイブかExpireのどちらかを自動でどちらかを手動でやるのが理想なのか
もしれません。安全性からいえばやはり自動アーカイブ+手動expireですね。
両方やる場合はアーカイブだけを設定してみて、うまくいっていることを確認
してから expire を設定するべきでしょう。

パラメータの選び方ですが、ファイルの取り寄せ等に影響があるため必ず 
$EXPIRE_LIMIT が日数ではなく"記事の数"(残したい記事の数)で指定して下さ
い。そして次の条件

	$EXPIRE_LIMIT > $ARCHIVE_UNIT 

が必要です。念のため

	$EXPIRE_LIMIT = $ARCHIVE_UNIT * 2;

くらいにしておくのが良いでしょう。そうでない場合整合性が保証されないの
でエラーとなります。もちろん毎回ファイルを全て調べる等の莫大な 
overhead をかければ実現はできますが、コストが見合うとは思えないので実
装されていません。


5.3	Config.ph Configurations


	$USE_EXPIRE = 1; (default is 0, "not expire")

にすると expire をします。デフォールトでは

	$EXPIRE_LIMIT = "7days";

で、7日つまり一週間分の記事だけを残して後は消去します。単位は
$EXPIRE_LIMIT で調整します。$EXPIRE_LIMIT のシンタックスは

	数字days (日数)
	数字	 (記事の数)

のいづれかです。例:

	7days	7日間保存
	100	最近100通の記事を残して後は消去


5.4	expire.pl コマンドラインオプション (bin/expire.pl)

expire.pl [-h] [-e expire_days] [-s spool_directory] [-n]

    -h this help
    -e expireする日数
    -n (残すファイル数を設定して、expireするモード)
    -s スプール


[PREVIOUS CHAPTER] [NEXT CHAPTER]