2017-02-07 2 views
0

SFTPサーバー上のフォルダを監視したり、聴いたりする必要があります。将来のある時(私はいつか分かりません)、フォルダはファイルで更新されます。 1分ごとにpingを実行するのではなく、そのフォルダにリスナーまたはウォッチャーを設定して、そのファイルがいつあるかを知っていますか? Erlangのssh_sftpモジュールはこのための機能を提供していますか?Erlangのssh_sftpライブラリは、ディレクトリの変更をリッスンする方法を提供していますか?

+0

これは、これを行うための 'ssh_sftp'モジュールの役割ではありません。この関連[質問](http://stackoverflow.com/questions/5682142/erlang-create-filewatcher)を読むことができます。 –

答えて

0

SFTPもFTPプロトコルも、クライアントにリモートフォルダの変更について通知するメカニズムはありません。変更を検出する唯一の解決策は、リモートディレクトリツリーを定期的に列挙し、相違点を見つけることです。

Refが:https://winscp.net/eng/docs/library_example_watch_for_changes

0

私はあなたがまだそれを必要とするかどうか知らないが、私はすでに何が必要実装しました。私は法的合意のためにコードを共有することはできませんが、私はあなたにそれを実装する方法を示唆することができます。

要件:ファイルを効率的に処理するために、定義された間隔でディレクトリをポーリングするのではなく、ファイルがディレクトリに着くたびに関数を実行します。

ステップ1:sftpd_file_handlerであなたは、ファイルが完全に転送されるとウル希望ハンドラを呼び出すためのトリガをかけることができます;)):サブシステム

{ok, Pid} = ssh:daemon(Port, [{user_passwords, [{User, Pass}]}, 
           {system_dir, SystemDir}, 
           {user_dir, UserDir}, 
           {key_cb, cac_auth}, 
           {shell, {cacsftpd_server, display_info, []}}, 
           {subsystems, [ssh_sftpd:subsystem_spec([{cwd, 
           Home}, {file_handler, sftpd_file_handler}])]}]) 

ステップ2として、SFTPとSSHデーモン・プロセスを開始します。

関連する問題