4

リモートユーザーが時々1つの大きなファイルを特定のディレクトリにアップロードするSFTPサーバー(debian sshサーバー)があります。

私の課題は、次のものを検出する必要があることです。

1) 新しいファイルが存在すること。

2) アップロード処理/送信が完了したこと。

これを行う最良の方法は何ですか?たぶん、これに利用できるツールがすでにいくつかありますか?

論理的に考えると、ディレクトリに新しいファイルが存在することを最初の段階で検出できるかもしれません。そして第 2 段階では、ユーザーの SFTP が切断されるまでループ/待機します!? その後、次のプロセスを起動できました...

ありがとう、ピーター

4

3 に答える 3

3

問題 1) については、inotifyAPI を使用してディレクトリの変更を監視できます。どのプログラミング言語を使用しているかは言いません。PerlLinux::Inotifyでは、Python で ,を使用しますpynotify

問題 2) については、ssh セッションが切断されるまで待機する方法と、inotifyファイルのクローズ通知を監視するために使用する方法があります。

于 2013-02-09T11:28:27.890 に答える
0

私も似たような状況に陥ったことがあります。私はJSCHを使用しましたが、アプローチが役立つかもしれません。

一時的な拡張子を付けてファイルをアップロードできます。例: bigFile.txt.temp。ファイルがアップロードされたら、目的のファイル名、つまりbigFile.txtに名前を変更し、一時ファイルを削除します。JSCH ChannelSftp . JSCH では、rename は 1 つのファイルのみを保持する役割を果たします。したがって、一時ファイルを明示的に削除する必要はありません。

新しいバージョンのファイルをアップロードする前に、一時ファイル (bigFile.txt.temp) の存在を確認してください。存在する場合は、ファイルが現在アップロードされていることを意味します。応答コードを設定するか、セッションが切断されるのを待ちます。

于 2013-02-18T17:59:59.627 に答える