大学の分散システムのコースでプロジェクトを行っています。私は Dropbox ( getdropbox.com ) に似たものを作成することを計画していますが、集中型ではないピアツーピアのひねりを加えています。このために、ディレクトリ構造の変更を検出する方法が必要です。Dropbox はこれをどのように行っていると思いますか? それらの実装は非常にうまく機能します。Windows の win32 API から FileSystemWatcher を使用しているのか、Linux と Mac に類似したプラットフォームに依存するものを使用しているのか疑問に思います。
4 に答える
Mac OS X Leopard には、ファイル システムの変更の通知を登録できる FSEvents API があります。
http://googlemac.blogspot.com/2008/03/file-system-change-logger-for-leopard.html
Linux 側には、恐ろしく文書化されていない inotify があります。glib を使用してもかまわない場合は、非常に使いやすいGFileMonitorクラスがあります。ただし、移植可能ではないと思うので、Linux専用になります。
eduffy は inotify について言及しました ....
inotifyに基づいて、これをしばらく前に見ました。incron と呼ばれ、cron のような機能を incron に追加します。
私の知る限り、DropBox (など) は Windows サービス (または Linux/Mac 側のデーモン) を使用してファイル システムを監視します。これを .Net で作成するのは非常に簡単で、このシナリオは通常、Windows サービスの典型的な例です。C++ で同様のことを行うのもかなり簡単だと思います。
これは、Windows でサービスを作成する方法に関する .Net の簡単なチュートリアルへのリンクです。ソリューションのために必要なことは、Timer.Tick() イベントにモニター ロジックを追加することだけです。