Я установил SFTP-сервер и некоторые триггеры, которые я хочу запустить, когда файл будет готов.
В случае, если я запустил до того, как он был завершен, или в случае ошибки соединения, я пишусначала в папку tmp
(с использованием протокола SFTP) и после ее копирования я перемещаю ее в папку new
.
Я отслеживаю все события в одной папке, а другая с помощью 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
Однако, если я перемещаю файл методом RENAME через SFTP, это не так.Это все запущенные события:
В папке 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 Я использую openssh-sftp-сервер для сервера