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


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


5.1	Introduction

Expire(一定日数以上古いファイルを消去する方法)は従来 HOOK を使う方法
で実装されていましたが、現在では正式な機能として含まれているので
USE_EXPIRE 変数で機能の off/on ができます。


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

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

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

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

「絶対に記事は失われてはいけない」という強い要求がある場合に 
「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]