MT File Watcher について

田中求之(Motoyuki Tanaka)

1.0 (July 7, 2001)


MT File Watcher は何か?

MT File Watcher は UVJ Mailer と組み合わせて使うことを想定した、ファイル監視用ソフトです。指定されたフォルダ内のファイルを調べ、更新されたり名前などの変更のあったファイルがあるかなどのレポートを、指定されたメールアドレスへメールで送ります。

サーバなどのファイルの状況を監視することを目的に REALbasic 2.1.2 で作成したフリーウェアです。

必ず UVJ Mailer と同じマシンで動かしてください(ただし、AppleScript の Report コマンドを利用する場合には、UVJ mailer は必要ありません)。


Download

MT_File_Watcher_1.0.sit (FAT 版、842K)

*REALbasic 2.1.2 用プロジェクトファイルも入っています。


最初の設定

まず最初に手動で起動してください。ウィンドウなどの表示は一切ありません。初めて起動したときに MT File Watcher と同じフォルダー内に target と info というフォルダーが作られるようになっています。

Edit メニューの Preference を選んで、出てきたダイアログで、メールの宛先になるアドレスを記入してください。

MT File Watcher で設定を行わなければならないのは、この項目だけです。なお、ここで設定したアドレスは、システムフォルダー内の初期設定フォルダーに MT_FW_Pref というファイルが作られ、そこに保存されるようになっています。


監視対象フォルダーの設定

MT File Watcher と同じフォルダー内に作られた target フォルダーの中に、監視を行いたいフォルダーのエイリアスを作って収めます。数に制限はありません。この target フォルダーの中にあるエイリアスのフォルダーのそれぞれについてチェックが行われます。

対象となったフォルダーの中にある、すべてのファイルがチェックの対象になります。サブフォルダーの中身もすべてチェックを行います。ただし不可視(Finder で見えない)のファイルは対象に含めません。

また、エイリアスは常にファイルとして扱われます。エイリアスの指し示している実体が参照されることはありません。ですから、フォルダーのエイリアスが見つかった場合でも、あくまでもエイリアスのファイルとして扱われ、フォルダーが参照されることはありません。


初期状態の記録

target フォルダーの中に監視するフォルダーのエイリアスを収めたら、File メニューの Snap を実行してください。これによって、その時点のファイルに関する情報が記録されます。そして、この記録との比較でファイルの変動を追いかけるようになっています。

MT Wile Watcher と同じフォルダーの中の info というフォルダの中に記録が保存されるようになっています。

ファイルが多い場合など、メモリー不足のエラーが出るかも知れません。その場合は、MT File Watcher に割り当ててあるメモリーを増やして、再度、Snap を実行してください。

info フォルダーの中の各フォルダーの中には、フォルダーごとの情報がおさめられます。

各ファイルの数字はフォルダーの ID になっており、個々のファイルには、そのフォルダー内のファイルに関する情報が記録されています。各ファイルの情報は

0000000184 -1223840143 pref ztcp TCP/IP 初期設定

というようになっており、ファイルの ID、更新日時、ファイルタイプ、クリエータ、そしてファイル名が記録されています。

また List というファイルに、対象フォルダー内のサブフォルダーの一覧が記録されます。


チェック項目

info フォルダーに記録してあるファイルの状態と、実行時の状態とを比較して、以下の項目に関して報告を行います(この際、記録の更新も行われます)。

ただし、フォルダーの移動は、監視しているフォルダー内部での移動しか追跡しません(他のフォルダーに移された場合には、削除扱いになります。

また、名前・タイプ・クリエータの変更については、ファイルの更新日が変わっていないにも関わらず変更があった場合のみ拾い上げるようになっています。


UVJ Mailer の設定

UVJ mailer の Event Timer によって呼びだされることでチェックを行うようになっています。MT File Watcher 自身にはタイマー機能はありません。

UVJ mailer の Timer 設定パネルで Add Event をクリックし、MT File Watcher を対象として選んでください。

Timer の設定の際には、以下のように send "UVJ Mailer notified" を選んでください。UVJ Mailer から送られてくる Event Class = "XUVJ", Event ID = "time" の AppleEvent を受けて、MT File Watcher はフォルダーのチェックを開始します。

Direct Parameter を使ってチェックの際の動作を指定できます。

Direct Paramter が空欄の場合には、呼びだされるたびに、チェックを行い、レポートをメールします。

Direct Parameter に 1 から 24 の半角の数字を指定しておくことで、動作する時間を変えられます。MT File Watcher は、実行時の時間帯を指定された数字で割って余りが 0 のときにのみ、チェックを行います。それ以外の時には、何もしません。

たとえば、Direct Parameter に 3 を渡すと、午前0時、午前3時、午前6時… と言う具合に、3の倍数になっている時間帯でなければチェックを行いません。また、17 をしてすると午後5時(17時)のみチェックを行うことになります。

UVJ Mailer の Timer によって毎時間呼びだされることになりますが、このように Direct Parameter の数字の指定によって、動作の間隔やタイミングが変えられます。

Direct Parameter にマイナスの数を指定すると(-1 から -24 の間の整数しか受け取りません)、チェックを行い、変化が見つかった監視対象フォルダーに関してのみレポートを作成します(このさい記録の更新は必ず行われます)。もし、すべての監視対象フォルダーで変化が見つからなかった場合には、レポートのメールは発送されません。

たとえば -1 を Direct Parameter に指定しておくと、毎時間、Timer で呼びだされるたびにチェックは行いますが、変化を見つけた時しかレポートが送られてこないようになります。


レポートメールのサンプル

以下のような内容のメールが "File Watcher Report" という題名で発送されることになります。

チェック日時: 06/22/2001 23:01
  基準日時: 06/22/2001 22:32

----------------------------------------------------------------------

■チェック対象フォルダ■

  Macintosh HD:システムフォルダ:初期設定:

[新規フォルダ]

  なし

[消失フォルダ]

  なし

[移動フォルダ]

  なし

[新規ファイル]

  なし

[消失ファイル]

  なし

[更新ファイル]

  :ASLM Preferences
  :システム初期設定
  :日付 & 時刻初期設定
  :File Exchange 初期設定
  :サウンド初期設定
  :Apple Menu Options Prefs
  :Power Mgt Preferences
  :TSM Preferences
  :キーボード初期設定
  :Users & Groups Data File
  :コントロールバー初期設定
  :マウス初期設定
  :B'sCrew Extension Prefs
  :省エネルギー初期設定
  :CD/DVD prefs
  :Default Folder Prefs
  :FB Prefs
  :Mac OS 初期設定
  :REALbasic2 Prefs
  :VOODOO Prefs
  :MT_FW_Pref
  :Adobe Type Manager:ATM OTF Support
  :EGBRIDGEフォルダ:標準設定
  :リモートアクセス:リモートアクセス作業記録
  :リモートアクセス:リモートアクセス初期設定
  :OneClick Folder:Button Palettes:Backup:Global Palettes

[変更ファイル]

  なし

----------------------------------------------------------------------

Checked by "MT File Watcher" by Motoyuki Tanaka

AppleScript による利用

AppleScript で MT File Watcher を利用することが出来ます。実装してあるコマンドは、ファイル状況を記録する snap と、ファイルのチェックを行ってレポートを作成する Report です。

snapは、File メニューの snap を実行したのと同じ動作を行います。つまり、監視対象フォルダーの状況を記録する処理を開始します。

sendは、UVJ Mailer の Timer から呼びだされたのと同じ動作をします。つまり、監視対象フォルダーのファイルの状況をチェックし、レポートを UVJ Mailer によって発送します。

reportは、ファイルの状況をチェックしレポートを作成します。ただし、UVJ Mailer でメールとして発送するのではなく、ダイレクトパラメータで指定されたアプリケーションに対して、AppleEvent でレポートを送ります。

report コマンドの書式:

report alias  -- receiver application
    [only checking boolean]

alias としてレポートを受け取るアプリケーションを指定します。チェックが終了し、レポートの作成が完了すると、EventClass = "mtFW", EventID = "repo" の AppleEvent のダイレクトパラメータとして、レポートが送られてきます。

only checking を true にしておくと(with only checking を付けて呼ぶ)、ファイルのチェックは行いますが、記録の更新は行いません。

以下に、report を実行し、その結果をファイルに記録するスクリプトの例を示しておきます(StayOpen のアプリケーションとして保存し、実行します)。

on run
    set df to (path to me)
    tell application "MT File Watcher"
        report df
    end tell
end run

on ヌevent mtFWrepoネ myMsg
    set tgF to ((":" as alias) as string) & "MTFW Report"
    MT Write File myMsg to file tgF creator type "R*ch"
    quit
end ヌevent mtFWrepoネ

使用上の注意

AppleShare でマウントしたボリュームのフォルダを監視することも原理的には問題ないはずですが、十分なテストなどは行っていません。AppleShare はサポート外としますので、もしお試しになる場合には、各自の責任でお願いします。

MT File watcher は、監視対象のフォルダを、そのフォルダが置かれているボリューム(ディスク/パーティション)のボリューム・リファレンス・ナンバーというシステムが内部的に割り振る番号を基に記録するようになっています。この番号は、ボリュームがマウントされる順番が変わると異なる番号になってしまいます。このため、起動ディスクを変更した場合には、過去の記録は無効になってしまいます。つまり、起動ディスクを変更した場合には対応していません。この点は注意してください。


その他

MT File Watcher はフリーウェアです。REALbasic のプロジェクトも含めて、どのようにご利用なさろうとも自由です。

なお、REALbasic のプロジェクトを改造なさる場合には、クリエーターは変更してください。クリエーター 'mtFW' を田中の MT File Watcher のものとして Apple に登録してあります。また、REALbasic の 2.1.1 以外のバージョンでの利用については、一切保証しません(田中は REALbasic のリリースとアップグレードのあり方に疑問を感じて、まだ 3.x にはバージョンアップしていません)。

このソフトウェアを用いたことによってどのようなことが起ころうとも、田中求之は一切の責任を負いません。

バグのレポートなどは Web Scripter's Meeting にてお願いします。メールによる個別の問い合わせはご遠慮ください。