CacheUpIt とは、Web 上のオブジェクト(ページや画像など単一の URL で示されるもの、以下「オブジェクト」)の更新を定期的にチェックし、更新されていればダウンロードして指定場所へアップロードする Perl スクリプトです。一種の同期ツールです。
このスクリプトは .Mac の Web スペースのページやブログに外部サービスを用いて提供されるコンテンツが使用されているときの次のような欠点を解消する目的で作されました。
CacheUpIt は上にあげた二つの目的を達成する他、次の特徴があります。
オブジェクトが更新される平均間隔はそのオブジェクト毎に異なります。このため全体でチェック間隔が一律に決められると一方では長すぎ、他方では短すぎることになってしまいます。
そこで CacheUpIt では個々のオブジェクト毎にチェック間隔を指定できるようにしてあります。
対象のオブジェクトの更新日時がその web サーバによってきちんと提供されている場合、CacheUpIt はその更新日時が前回のダウンロード時のものよりも新しくなっている場合にのみダウンロードします。
このためオブジェクトがあるサーバや CacheUpIt が動作しているマシンの回線の負荷を最小限にすることができるのです。
CacheUpIt はダウンロードおよびアップロードにデフォルトで curl コマンドを使用するようになっています。curl コマンドでは設定やコマンドラインオプションによってプロキシに対応しているので、CacheUpIt も設定によってプロキシサーバに対応可能です。
このため外部と隔絶された LAN 内のクライアントマシンのために、そのゲートウェイとなっているマシン上で CacheUpIt を使用することで、LAN 外のコンテンツを提供することもできます。
上述のように curl コマンドを使用することで、HTTP, HTTPS, FTP, FTPS, GOPHER, DICT, TELNET, LDAP, FILE といった様々なプロトコルをダウンロードやアップロードに使用できます。
デフォルトでは CacheUpIt はダウンロード、アップロードともに curl コマンドを利用していますが、これは設定により任意のコマンドに代えることができます。
例えば scp コマンドに差し替えて、リモートにある自分のアカウントのファイルを手元のマシンに同期させることも可能です。
CacheUpIt は syslog を用いてその動作状況をレポートします。このため何らかのトラブルが発生しても適切に syslog によるログを監視していれば管理者はアラートを受け取ることが可能です。
CacheUpIt を動作させるためには次の条件を満たす必要があります。
現在、作者は Linux および Mac OS X で動作を確認しています。
設定を変更することにより curl コマンドに代わる別なコマンドを用いてもよい。ですからこれが必須というわけではありませんが、デフォルトでは必要です。
両方のプロトコルが file である場合はこの限りではありません。しかし、このケースは単なるファイルのコピーなので、シンボリックリンクなど別な手段を用いた方が遥かによいでしょう。
もちろん、常時同期させるためには常時稼働しているマシンで CacheUpIt を用いなければなりません。