0

ファイルの準備ができたときに起動する SFTP サーバーといくつかのトリガーを設定しました。

完了する前に開始した場合、または接続でエラーが発生した場合は、最初にtmpフォルダーに書き込み (SFTP プロトコルを使用)、コピーしたらnewフォルダーに移動します。

1 つのフォルダー内のすべてのイベントを追跡し、もう 1 つのフォルダーを inotify で追跡しています。

inotifywait -m --format '%:e %f' new
inotifywait -m --format '%:e %f' tmp

tmp フォルダーにファイルを書き込むためのイベントは次のとおりです。

CREATE newFile
OPEN newFile
ATTRIB newFile
MODIFY newFile
MODIFY newFile
MODIFY newFile

ファイルをあるフォルダーから別のフォルダーに移動すると、bash から次のことがわかりました。

mv tmp/newFile new

MOVE_TOイベントがトリガーされます。tmp フォルダー内:

CLOSE_WRITE:CLOSE newFile
MOVED_FROM newFile

新しいフォルダーで:

MOVED_TO newFile

ただし、SFTP を介して RENAME メソッドを使用してファイルを移動すると、移動しません。これらは、トリガーされたすべてのイベントです。

tmp フォルダー内:

CLOSE_WRITE:CLOSE newFile
DELETE newFile

新しいフォルダーで:

CREATE newFile
OPEN newFile
ACCESS newFile
CLOSE_NOWRITE:CLOSE newFile

これは SFTP のプロトコルの一部ですか? sftp でファイルを移動して、実際に MOVED_TO イベントをトリガーすることは可能ですか?

これは、私が使用している sftp クライアントの実装です: https://github.com/mscdex/ssh2-streams/blob/55fd9c36b6dca8dbf0588a1d6f450b85c784dc72/lib/sftp.js

4

0 に答える 0