このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

ページ書き換えの自動通知

発言者:たまちゃん
( Date Sunday, June 03, 2001 12:05:01 )


いつもお世話になっております。

ホームページのいろいろなページを書き換え(られ)たときに,
管理者あてにメールなどで通知するにはどのような方法があるで
しょうか(もちろん Mac OS ベースで)。

PageSentry を使えば特定のページが書き換えられたときに,通知
できるのは存じておりますが,管轄するウェブのページ全体をモニ
ターして,変更があった際に通知する方法を知りたいと思っていま
す。

いい方法をご存知であれば教えていただけると助かります。

田中求之 さんからのコメント
( Sunday, June 03, 2001 12:57:26 )

大掛かりな Web サイトの場合と、小規模な、たとえば、せいぜいがこのサイトの
ように Mac 1台でやっている程度のものでしょうか?

大掛かりなものでしたら、たとえば Phantom のようなロボットを動かして、
毎日サーチさせ、変更があったものだけを確認することができます。
(自分で検索は必要になってきますが)

小規模なものでしたら、Web のルートフォルダー内のファイルをすべて検索して
ある日時以降に更新されたファイルが見つかった場合には、そのファイルの
パス(URL)を管理者あてにメールするソフトを組んで動かす、ということが
できます。1日に1回程度の確認でよければ、サーバ機で動かしても負担は
知れてますね。メール送信は UVJ Mailer のような他のソフトに任せてよい
ということでしたら、基本的に検索だけですので、処理は簡単になります。

…作ってみましょうか (^_^;; ?

たまちゃん さんからのコメント
( Sunday, June 03, 2001 13:20:44 )

すみません。質問の意図を書いていませんでした。

実は今週,学内で Mac OS によるサーバの講習会を開くことになり
(講師は最悪ですが,この私)事前にいくつか質問が来ました。そ
の中でこのスレッドの質問のようなものが来てしまい,はたと返答
に困ってしまったのです(他の OS では TripWire をはじめとして
あるそうな)。

しかも出来れば無料のものがいいということで,2重に困ってしま
った訳です。

>…作ってみましょうか (^_^;; ?

申し訳ありません。そしてお心遣い大変有り難うございます。上記
のように私は使わないのですが,皆さんの中で田中さんのお手を煩
わせてもいいというのであれば私からもお願いいたします。

書いた後で1つだけ拙い方法を思いつき,実験をしました。

1.監視元のフォルダと同じフォルダを別につくっておく。
2.バックアップソフトで一定時間ごとにシンクロナイズする。
3.どのファイルを監視元からコピーしたかのレポートをつくる。
4.そのレポートを UVJ Mailer で管理者に送る。

HyBackUp というバックアップソフトと UVJ Mailer で出来ることを
確認しました。

もっと調べてから書くべきでしたが,皆さんはどのようになさって
いますか?

田中求之 さんからのコメント
( Sunday, June 03, 2001 13:52:30 )

ちょうど EIMS でファイルに保存したメールを HTML に変換するソフトを
組み始めたところですので、それに機能を組み込む形で、プロトタイプを
作ってみます(フォルダーの監視という基本的な機能は同じですから)。

たまちゃん さんからのコメント
( Sunday, June 03, 2001 17:16:22 )

有り難うございます。よろしくお願いいたします。

田中求之 さんからのコメント
( Monday, June 04, 2001 17:15:20 )

UVJ Mailer と同じマシン上において使用するファイル監視ソフトのベータ版
を作ってみました。UVJ Mailer 補助ツールとでもいうべきでしょうか。

詳しいことは doc フォルダーの中に入っている read_me.html を読んでく
ださい。

UVJ Mailer の Timer によって作動し、指定されたフォルダー内の全ての
可視ファイル(サブフォルダー内も当然含む)のチェックを行い、一定時間
内に更新されたものがあれば、それをメールでレポートするようになってます。

REALbasic 1.1.1 で組んだフリーウェアです。プロジェクトもついてます。

→  MT_File_Watcher_1.0b.sit

たまちゃん さんからのコメント
( Monday, June 04, 2001 20:15:10 )

有り難うございました。早速テストをさせていただきました。動作
の確認が出来ました。

すみません。要望を1つだけしてもよろしいでしょうか。

既存のファイルの変更をチェックすることだけではなく,今までに
無かったファイルが突如(指定時間内に)現れた場合に

XX 時間以内に新たに加わったファイルは以下のものです

--> MacintoshHD:WebSTAR Server Suite 4.4:
:newfile.html

というように検知するようには出来ないでしょうか。書き換えだけ
ではなく,書き置き(?)の検知ということです。

厚かましいお願いですが,もし可能でしたらご検討いただけると幸
いです。

田中求之 さんからのコメント
( Monday, June 04, 2001 21:02:07 )

更新されたものと、新規作成されたものとを分けて通知するようにすれば
よいわけですね。

楽勝ですので、さっそく実装して、明日にでも b2 出します。

田中求之 さんからのコメント
( Monday, June 04, 2001 21:04:20 )

あ、必ずしも新規作成ばかりではないですんですね。転送とか、移動によって
増えたファイルも拾って欲しいってことですよね?

としたら、フォルダーの状態を記録して比較する処理が必要になりますので、
ちょっとばかり作り込みが必要になります。もうちょいと待ってください。

たまちゃん さんからのコメント
( Monday, June 04, 2001 21:28:49 )

>あ、必ずしも新規作成ばかりではないですんですね。転送とか、移動によって
>増えたファイルも拾って欲しいってことですよね?

以心伝心。(^_^)

たまちゃん さんからのコメント
( Monday, June 04, 2001 21:37:14 )

「削除されたファイルのリストは」というのが出来れば,完璧にな
ると思いますが,御免なさい,仕事を増やしてしまいます。(^_^;;

いつもながらの早さには感服いたしております。

これで Mac OS でサーバ(特に NT/2000 からの乗り換え)をうまく
話すことが出来そうです。有り難うございます。

田中求之 さんからのコメント
( Monday, June 04, 2001 22:38:32 )

REALbasic のファイル関連機能だけでは十分な追跡ができませんので、
XFCN でファイルの ID を追跡するようにします(ファイル名の変更など
も追跡可能になる)。

削除されたものも報告できるようになると思います。

ただし、Quick & dirty で組みますので(ファイル情報などはテキストに
保存するなど)、処理速度は少し犠牲にします。あしからず。

うに さんからのコメント
( Saturday, June 09, 2001 22:23:42 )

InternetExplorerの購読機能を使うと
おそらく最も簡単な監視システムができます。
(もちろんメールで知らせてくれます)
ウチのように世代遅れのMacだと
サーバーが重くなってしまいますが...。

田中求之 さんからのコメント
( Sunday, June 10, 2001 00:59:39 )

開発環境を REALbasic 2.1.2 に移行して、とりあえずプロトタイプは
組み上がりました。削除されたファイル、新たに追加されたファイル、
更新されたファイル、そして名前を変更したファイル、の4種類を
リストアップします。

Volume Reference Number と Directory ID と File ID で追跡を行う
ようにしたため、起動ディスクを変更したり、ディスクがマウントされる
順番が変わると追跡がうまく行かないという欠点があるんですが、
うまくいけば、明日にでも登録します。

田中求之 さんからのコメント
( Monday, June 11, 2001 14:05:30 )

MT File Watcher 1.0b2 を登録しました。

今回から大幅に動作を変えてあります。ファイルの状態を記録しておき、
その記録を元に比較を行うというものになっています。

初期設定、UVJ Mailer 側での設定に変更がありますので、注意してください。
(前回のチェック時との比較を行うようになったため、時間指定が不要です)

PPC 版と 68K 版を分けてあります。

基本機能の実装を優先したため、コードが整理できていない部分があります
ので、今回のバージョンの Rb のプロジェクトの公開は見送ります (^_^;;

→  MT_File_Watcher_1.0b2_PPC.sit

田中求之 さんからのコメント
( Monday, June 11, 2001 14:06:23 )

68K 版です

→  MT_File_Watcher_1.0b2_68K.sit

たまちゃん さんからのコメント
( Monday, June 11, 2001 14:58:14 )

仕事の途中でしたが,発作的にテストをしてしまいました。(^_^;;

基本的な機能を確認いたしました。(監視しているフォルダ内の)
フォルダ名の変更も通知してくれました。

どれくらいのサイズのフォルダを監視してくれるかのテストを次に
行いました。

1.20GBのハードディスク全体。デフォルトのメモリ割り当て
で「NilObjectException」のエラー。続けて強行すると,タイプ10
エラー。
2.再起動して,メモリ割り当てを40MBにしても NilObject の
エラーで起動せず。
3.同じメモリ割り当てで,今度は500MBのフォルダを監視す
ると,ばっちし成功。
4.メモリ割り当てを4MBくらいに減らして,3のフォルダを監
視すると今度も成功。

G4マシンでテストしましたが,非常に動作が高速で,例えば1日に
一度監視するのであれば,サーバにもそんなに負荷を与えないんで
はないかと思いました。

とりあえずのレポートと,「有り難うございました」のお礼でした。

田中求之 さんからのコメント
( Monday, June 11, 2001 15:06:44 )

さっそくのテスト、ありがとうございます。

20G でうまくいかなかったのは、たぶん、メモリーではなく、私のコードに
バグがあるためと思います (^_^;; … XFCN 使っているんで、フルパスが
255バイトを越えるとダメとか、そういう制限があるんで。

なお、ドキュメントには説明を省いていますが、このソフトは、ファイルと
フォルダーを ID (作成時にシステムが割り当てるもので、いったん使われた
番号は2度と使われないようになっている番号です)で追跡します。このため、
名前が同じであっても、いったん削除されて、作り直されたファイルの場合は、削除と新規の両方に現れます。このように、ちょっと癖があります。

なにはともあれ、問題点があれば、なんなりと指摘してください。

田中求之 さんからのコメント
( Monday, June 11, 2001 23:30:48 )

>20GBのハードディスク全体。デフォルトのメモリ割り当て
>で「NilObjectException」のエラー

さっそく自宅に戻ってコードを点検したところ、何のことない、単にハードディスク
丸ごとの場合を想定していない作りになってました。その点を修正して、
かつ XFCN をフルパスに依存しないものに作り替えたところ、6G (8394
項目が存在)のディスクの Snap とチェックが難なく成功しました。
REAlbasic に 10M を割り当て、それで十分でした(再帰呼び出し使って
ないのが効いてるな)。

明日にでも 1.0b3 として公開します。

さんからのコメント
( Tuesday, June 12, 2001 09:26:42 )

製品名
PapaToldMe
というのはいかがでしょう?>田中先生

田中求之 さんからのコメント
( Tuesday, June 12, 2001 12:35:24 )

1.0b3 を登録しておきました。Preference の保存位置を変えたので、
これまでのバージョンのユーザーの方は、再度、メールアドレスの
設定を行ってください。

68K 用は以下の URL になります。

http://mtlab.ecn.fpu.ac.jp/mySamples/MT_File_Watcher_1.0b3_68K.sit


>PapaToldMe
>というのはいかがでしょう?

くぅ〜、その手があったかぁ〜〜。いいですねぇ。でも、そこまで名乗るほどの
もんではないので、とりあえず、このまま武骨な名前でいきますわ。

→  MT_File_Watcher_1.0b3_PPC.sit

たまちゃん さんからのコメント
( Tuesday, June 12, 2001 13:31:40 )

早速テストしました。

1.プログラムのメモリの割り当てを変えようとしましたが,変更
出来ないようになっていました。
2.何度か動かすと,途中で RunTime Error が出ました。
3.ファイルを捨てても,検出せず,ファイルの中身を変更しても
検出しないことがありました。
4.==> Lost Files <==
  *****
  
  と出るはずですが,無くなったファイルのときはファイル名が
  一番上に出てきて,その後で
  
  ==> Modified Files <==

  ==> Name Changed Files <==
  
  となりました。またいろいろと試しましたが, ==>  <== で現れ
  る項目と現れない項目がまちまちでした

田中求之 さんからのコメント
( Saturday, June 16, 2001 15:54:25 )

たまちゃんさんからのバグレポートの原因を探っているうちに、内部の処理の
手順を大きく変更する気になってしまい、ちょっと間があきましたが、新しい
1.0b4 を作成・公開します。今回は FAT バイナリになっています。また、
REALbasic 2.1.2 のプロジェクトも同封してあります。


1.0b3 からの変更点は以下の通り

*  ファイル情報を記録しておくファイル(info フォルダー内に作られるファ
イル)の書式を変更しました。前バージョンのユーザーの方は、info フォル
ダーを削除して、改めて Snap し直してください。

*  target フォルダ内のエイリアスの追加/削除に対応しました。ファイル
チェック時に記録の更新を行うようになりました。

*  レポートの書式をまた変更しました。対象となるフォルダ毎に区切られた
ものになりました。また、ファイルは対象となるフォルダからの相対パスが
表示されるように変更しました。

*  主な処理を Thread で行うようにしました。これによって、他のアプリ
ケーション(サーバなど)と、より協調的な形で処理を行うようになりまし
た。

主な処理を thread で行うようにしたことで、処理時間は長くなってしまう
可能性がありますが、そのかわり、それほど他のアプリケーションの邪魔を
しなくなっています。

… LC475 で動かすと、さすがに遅いなぁ…

→  MT_File_Watcher_1.0b4.sit

たまちゃん さんからのコメント
( Saturday, June 16, 2001 23:37:03 )

報告が遅くなりました。早速テストをさせていただきました。有り
難うございました。

b3 で報告した問題点はすべて直っていました。(^_^)

新たな問題点は,やはり大きなサイズのボリュームをターゲットに
したときで,今回は自宅のマシンで10GBのボリュームを対象に
しました。デフォルトのメモリではメモリ不足のエラーメッセージ
が出ましたので,メモリ割り当てを増やしてテストを続けました。

File Watcher に(メモリ割り当てなどの)変更を加えたり,Snap
ファイルをつくっているときに,UVJ Mailer から File Watcher
の場所を改めて指定し直したときなど,タイプ10のエラーが出まし
た(私の環境でのみ起こるのかもしれません)。

1時間ほど走らせましたが,インデックス化が終わりませんでした。
info フォルダの中を開けようとして失敗。その時点で,6000数百の
ファイルがあり,20MB強もあったようです。

そこで,本来の用途である,ウェブサーバでサービングするフォル
ダ(数百メガ)を対象にすると,10秒ほどでインデックス化が終
わり,後のテストは順調に進みました。

なお,File Watcher が原因かどうか不明ですが,対象としていた
ボリュームのいくつかのフォルダの作成日が「2040年2月5日」に変
わっていました。

田中求之 さんからのコメント
( Sunday, June 17, 2001 02:28:22 )

なんとか動いたようでよかったです。私の方は、この会議室関連のフォルダの監視で
テストを続けているのですが、とりあえずは動いてます。

ディスク丸ごとを対象とした場合には、やはりフォルダ/ファイルの数が
膨大になるため、負担が重すぎるようです。メモリー上にデータを保持するのを
止めて、テンポラリ・ファイルをバンバン使う方法にすれば、メモリーの
負担が小さくなるのは分っているのですが、そうすると、今度はファイルの
読み書きの部分が問題を起こしそうで怖いんですよね。


>ボリュームのいくつかのフォルダの作成日が「2040年2月5日」に変
>わっていました。

これは MT File Watcher には関係ないと思います。 …思いたい (^_^;;
フォルダの作成日の情報は一切いじってませんので。

REALbasic という開発環境が、今一つ信頼できない部分があり、たとえば
タイプ10のシステムエラーが何かのタイミングで発生したりしますが、
これなども原因がとんと分らぬエラーの一つです。

そういう意味では、まぁ、気をつけて使ってくださいね、としか言い様が
ないんです。 REALbasic でシェアウェアを作っている人も少なくないという
状況になってきましたが、よく、こんな環境を使って作ったもので金をとる
なぁ、というのが、非常に個人的な(独断的な)感覚だったりします (^_^;;

…その点、osax や XFCN 作りに使っている CompileIt! は、さすが、あの
(っても、もう歴史の教科書みたいなネタですが) Tiny BASIC の Tom Pittman が
作っただけのことはある、信頼できる環境なんですよねぇ…

たまちゃん さんからのコメント
( Sunday, June 17, 2001 10:02:50 )

テストのためのテストをやったので,MT File Watcher の用途(ウ
ェブで公開する特定のフォルダの監視等)がかえってはっきりと分
かり,十分以上に使えるということが分かりました。

お手数をかけ申し訳ありませんでした。とともに感謝の気持ちで一
杯です。

#今週は,Mac OS X Server のセミナーがあります。

田中求之 さんからのコメント
( Tuesday, June 19, 2001 23:53:59 )

現在のバージョンは、ファイルが更新されたかどうかを、ファイルの更新日の
記録だけでチェックを行っていますが、ファイルタイプ、クリエータ、
データのサイズ、リソースのサイズなどのチェックも行うようにした
ら、より良いチェック体制になるんですが、そこまで必要ですかね?
もちろん、チェックする項目が増える分、処理は重くなりますが。

バックアップソフトを見てると、ファイルのクリエータの変更を「変更」
として捉えるものと、無視するものとに分れるみたいですね。どっちが
「正しい」のかと言われたら、私としては、やはり、クリエータの変更
も、変更には違いないと思うんですよ。File Buddy などでクリエータの
変更をやってみれば分りますが、ファイルタイプやクリエータの変更は、
普通は、ファイルの更新(更新日として記録されるという意味での更新)
にはなりません。

まぁ、ファイルを開いただけでクリエータを変更してしまうアプリケーションも
ありますから(設定次第ではありますが)、あまり細い変更点まであげつらって
いると煩雑にはなっちゃうんですが。

たまちゃん さんからのコメント
( Tuesday, June 19, 2001 23:59:05 )

>そこまで必要ですかね?

File Watcher のもともとの趣旨(と私が思っているもの)からす
ると,必要ないのではないかと思います。必要かつ十分の機能を現
時点でももっていると思います。

猫の手 さんからのコメント
( Friday, June 22, 2001 07:18:18 )

 久しぶりにでてきました。

 FileWatcherは、いいですね。
一つ確認だけなんですが、アップルシェアサーバでシェアされているファイルは、
watchできないんでしょうか。ローカルではなくて、ネットワーク上のファイルです。
昨日試してみたら、ハングしてしまいました。
最初の主旨からはずれた目的での使用だと思うので、対応して欲しいと言うことではないんですが、
そう言うもんなんでしょうか。

田中求之 さんからのコメント
( Friday, June 22, 2001 08:29:53 )

>アップルシェアサーバでシェアされているファイルは、
>watchできないんでしょうか

想定していなかったので、テストすらしていませんでした (^_^;;

ハングアップするとしたら、おそらく XFCN 絡みだと思いますので、調べて
みます。

…ファイルタイプとクリエータの変更も追跡するようにしました。処理速度は
ほとんど変わらないので (^_^;;

田中求之 さんからのコメント
( Friday, June 22, 2001 14:40:53 )

AppleShare のボリュームに対してテストを行ってみました。サーバは ASIP
6.3.2
クライアント(Watcher の実行環境)は MacOS 8.6 です。

すると、AppleTalk 経由でマウントした場合にはエラーなしに snap もチェック
もできますが、TCP/IP 経由でのマウントの場合にはシステムエラー 10
が出て、マシンをリスタートしなければならなくなります。原因は不明
ですが、XFCN が利用しているローレベルの File Manager の問題かも
しれません。

なお、Watcher は、ボリューム・リファレンス・ナンバーという内部的に
ボリュームに与えられる番号を使って対象となるフォルダーの情報を記録
するようになっていますので、サーバのボリュームをマウントする順番を
変えたりすると、うまく追跡できないという問題があります。

こうしたことからも、ネットワークのボリュームに関しては、今のところ、
保証対象外ってところですね (^_^;;

田中求之 さんからのコメント
( Saturday, June 23, 2001 14:39:37 )

クリエータとファイルタイプも追跡するようにする一方、若干の高速化を
はかった 1.0fc1 をリリースします。

サーバ上にページを設けましたので、そこからダウンロードしてください。

→  MT File Watcher

たまちゃん さんからのコメント
( Saturday, June 23, 2001 22:29:27 )

有り難うございました。今し方テストすることが出来ました。

1.ターゲットフォルダ内のあるフォルダを消すと,消失フォルダ
として記録される → OK
2.消したフォルダをまた元のフォルダ内に復活させる(ターゲッ
トフォルダの外に出しておいたフォルダを元に戻しました)と,何
の変更もなかったものとして記録される(新規フォルダの作成はき
ちんと記録されます)

ということが分かりました。

田中求之 さんからのコメント
( Saturday, June 23, 2001 23:09:32 )

>消したフォルダをまた元のフォルダ内に復活させる(ターゲッ
>トフォルダの外に出しておいたフォルダを元に戻しました)と,何
>の変更もなかったものとして記録される

フォルダを移動させた場合には、フォルダの ID はそのままですので、
いったん出したものを元に戻せすと、何の変化もなかったものとして
扱います。このようにファイル/フォルダを ID で追いかけています
ので、Finder 上での操作の感覚と、ちょっと違う部分もあるかと
思いますが、まぁ、そんなに変ではないですよね?

たまちゃん さんからのコメント
( Saturday, June 23, 2001 23:25:43 )

了解しました。ID で追っかけているからなんですね。

>まぁ、そんなに変ではないですよね?

こんなテストをする私が変です。(^_^;;

田中求之 さんからのコメント
( Thursday, June 28, 2001 20:42:45 )

間もなく MT File Watcher 1.0GM を登録しますが、また info のフォーマット
変更を行ってしまいました (^_^;;

XFCN を使っていた部分を REALbasic 内部で直接 Toolbox を呼びだすように書
き換えて PPC 版の処理速度の向上を図ったのですが、その際、少しでもディス
クへのアクセスが減るようにするために、フォーマットの方を少し変更しまし
た。手元でテストした感じでは、若干早くなったと思います。

機能の点での変更はありません。

今週末に登録できると思います。

田中求之 さんからのコメント
( Saturday, June 30, 2001 13:44:29 )

1.0GM を登録しました。XFCN を使わなくして高速化を図る以外に、
AppleScript 対応に仕立てました。

Rb 2.1.2 のプロジェクトも同封してあります。

あとはバグ取りだけで、正式版へもっていきます。