Jane のキャッシュを RAM ディスクに置く運用方法
いろいろ考えた。
- ログオン時にリストア、ログオフ時にバックアップ
- Vista でログオフ時に自動実行させるにはタスクスケジューラではなくグループポリシーを使う。ところが Vista Home ではグループポリシーが使えない*1。ぷぎゃー
- スタートアップでリストア、以後随時バックアップ
- robocopy を使うと「フォルダを監視して変化があったらミラーリング」が可能。しかし監視間隔が最短1分ってのは長すぎるし、監視中ずっとコマンドプロンプトが出っぱなしになるのもイヤだ。
- アプリ起動時にリストア、終了時にバックアップ
- 同じく robocopy を使って差分コピーが可能。初回は全コピーになるので時間がかかりそう。……やってみたら 40MB 程度のコピーは数秒以内に終わっちゃって気にならない。
というわけで第 3 案を採用。 Jane2ch.exe の代わりに次の VBScript を実行するようにした。
Set ws = WScript.CreateObject("WScript.Shell") ws.Run "cmd /c robocopy D:\AppData\JaneStyle Z:\AppData\JaneStyle /mir /xd VwCache /njh /nfl /ndl", 7, true ws.Run "D:\Free\JaneStyle\Jane2ch.exe", 1, true ' 終了を待つ ws.Run "cmd /c robocopy Z:\AppData\JaneStyle D:\AppData\JaneStyle /mir /xd VwCache /njh /nfl /ndl", 7, true Set ws = Nothing
robocopy にアーカイブ機能はないのでフラグメンテーションは避けられないが、アーカイバを通すと (たとえ無圧縮 ZIP でも) 数秒では処理が終わらない。ここは速度を優先しよう。