2010-12-01 4 views
1

私のアプリケーションでは、リモートFTP(またはSFTPなど)の場所からディレクトリリストを表示できるようにしたいと思います。ファイル/ディレクトリがリモートディレクトリツリー内で変更されると、アプリケーションは関連する変更を含むビューを更新する必要があります。プロジェクトにroot権限(インストール用)なしでlibfuseを使用しますか? FTPマウント&inotify/kqueue/FSEvents

ツリー全体をトラバースするのが遅く、無駄であるので、私はFSEvents(Linuxの場合はinotify/kqueues)の行に沿って何かを使用したいと思いますが、これらのライブラリはファイルシステムベースであり、FTPサーバーマウントされたファイルシステムと同じではありません。

これらのライブラリを動作させるには、実際にはローカルマシン上のFTP/SFTPでバックアップされたファイルシステムをマウントし、FSEventStream(またはkqueueなど)をこのローカルマウントに接続する必要があります。私はヒューズがこれを行うことができます知っているが、ユーザーが最初にそれをインストールすることなくヒューズを使用することができる方法はありますか?つまり、実際にインストーラパッケージを実行してlibfuseとカーネルモジュールをシステムにコピーするプロセスをユーザーに任せずに、自分の(Mac)アプリケーションとバンドルしてマウントを作成できますか? /dev/fuseが存在するとしますか、またはこれはアプリケーションディレクトリ内の/dev/パスの外にありますか?

ニースMacアプリケーションは、簡単なドラッグ&ドロップ&と一緒にインストールされていると私は、可能な場合は鉱山をこのように維持したいと思います。 libfuseを直接使用することができるかどうか不明です(ファイルがアプリケーションに含まれている場合)。システムパスにインストールすることはありません。

また、ポーリングなしでFTP経由の変更を監視するための提案はありますか?

答えて

2

残念ながらFTPおよびSFTPは、クライアント通知の形式をサポートしていません。

は、多くのHTTPのような彼らは、それぞれのデータ転送は、クライアントによって開始されたリクエスト/レスポンス方式に基づいています。状況を悪化させるのは、HTTPに反して、特定の日付以降の変更をクライアントに通知するようサーバーに求める方法がないことです。

これは、ポーリングを使用する必要がないだけであることを意味するだけでなく、ポーリングは決して軽量になるということ。

FUSEが関連する限り、利用可能なほとんどのFTPモジュールとSFTPモジュールは、ユーザースペースアプリケーションがディレクトリリストを要求するとファイルシステムのビューを更新するだけです(ファイルブラウザウィンドウでRefreshを押すなど)。彼らは自分でポーリングを実行しません。ユーザー空間アプリケーションは、ディレクトリ自体をポーリングすることによってリフレッシュを開始する必要があります。

EDIT:

物事のカップルを明確にするために、FUSEの最近のバージョンは、通知イベントをサポートしています。彼らは イベントをモジュールからカーネルに単に渡します。モジュールはまだそれらを生成する必要があり、FTP/SFTPクライアントモジュールの場合はサーバーをポーリングせずに不可能です。

現在の多くのNFS実装では、NFSv4.1に必要な規定があるにも関わらず、変更通知もサポートされていないことにも注意してください。多くのSMB/CIFSサーバー(特に、安価なNetwork-Attached-Storage組み込みシステムのサーバー)もサポート対象外です。

+0

ありがとうございました。私はアプリ内の手動の「リフレッシュ」コントロールに戻らなければならないと思います。 MacFUSEがFSEvents、kqueues、KAuthをサポートしていることを示しているMacFUSEの著者とのこのインタビューに私はつまずきました。しかし、すべてのイベントがクライアント上で発生した場合にのみこれが機能するかどうかはわかりません...私は、ホスト上で発生したイベントがどのようにクライアントに反映されるかを知ることは難しいと感じています。調査では、(とにかくローカルストレージモニタリングのためにFSEventsを使用していますので、sshfsマウントでそれを指摘することは簡単です)。 – d11wtq

+0

Err ... "このインタビュー":http://www.mactech.com/articles/mactech/Vol.23/23.03/MacFUSE-SinghInterview/index.html – d11wtq

+0

どのNFSサーバが通知をサポートしていますか?どのクライアントをそれらのクライアントと一緒に使うことができますか? –

関連する問題