[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]