[PREVIOUS CHAPTER] [NEXT CHAPTER]
4 utility プログラム

4.1	gzip file にする(アーカイブへの変換)
../digest 2.17

$USE_ARCHIVE の自動操作にまかせずに時々手で もしくは cron 等でこのプロ
グラムを動かしても良いです。
../digest 2.17

	archive.pl [-dh] [-A ARCHIVE_DIR][-u unit] range

	-d	debug mode
	-h	help 
	-A	アーカイブを作る場所を指定
		config.ph より強い
	-u	固める単位。デフォールトは記事100個ずつ

	range	これで最大どの記事までをアーカイブするか強制指定
		デフォールトでは今の記事番号の直前の”100の倍数”
		までをアーカイブの対象の記事としてアーカイブを作る。

注意:このプログラムはMLのホームで実行されることを前提にしています。つ
まり

	% cd /var/spool/ml/Elena
	% perl bin/archive.pl

のように使うことを期待されています。

これは archive.pl 2000 とかすると、2000 までのファイルを 100 個ずつの
塊にして、archiveに作ります。変数は archive.pl の先頭でセットしてくだ
さい。元のスプールは消さないので、注意を払って消して下さい
(とりかえしがききませんから、それは)
#自分じゃ、念のため ある程度まとまったところでこうやって手動でつくっ
#てます。

例えば、

	spool/1-100	を tar+gzip して var/archive/100.tar.gz
	spool/101-200	を tar+gzip して var/archive/200.tar.gz

のようなファイルをarchiveの下に作ります。目的のMLの場所にまでいって

% ls 

MSendrc		actives		config.ph	deny
guide		help		list		log
members		objective	seq		spool
summary		welcome

% test -d var || mkdir var
% test -d var/archive || mkdir var/archive
% perl archive.pl 3800

	…たくさんメッセージが出るが省略…

% ls archive

100.tar.gz   200.tar.gz 

	…たくさんメッセージが出るが省略…

spoolの 3800 までの 100 個ずつのパッケージを作りました。spoolの方の元
メールを自動的に消しはしない(安全のため)ので、自分で消して下さい。

4.2	アーカイブ作成を cron で自動処理

cronで自動的(例えば週一日曜の朝とか)に次の形で

   (chdir /var/spool/ml/Elena; /usr/local/bin/perl bin/archive.pl)

とでもすれば良いでしょう。bin/archive.sh がその見本です。いくつかML
があるなら、シェルスクリプトにまとめて呼べば楽です。まとめ送りと同様に 
crontab に記述すればよいです。

crontab の例:

	0 * * * * /bin/sh /usr/libexec/fml/archive.sh

[/usr/libexec/fml/archive.sh]

	#!/bin/sh

	(cd /var/spool/ml/Elena;    /usr/local/bin/perl bin/archive.pl)
	(cd /var/spool/ml/Freekick; /usr/local/bin/perl bin/archive.pl)


[PREVIOUS CHAPTER] [NEXT CHAPTER]