我已经设置了SFTP服务器以及一些我想在文件准备好后启动的触发器。
万一我在完成之前就开始了,或者连接出现了错误,我首先将其写入tmp
文件夹(使用SFTP协议),然后将其复制到{{ 1}}文件夹。
我正在使用inotify跟踪一个文件夹中的所有事件,
new
将文件写入tmp文件夹的事件是:
inotifywait -m --format '%:e %f' new
inotifywait -m --format '%:e %f' tmp
我注意到,如果我将文件从bash移到另一个文件夹:
CREATE newFile
OPEN newFile
ATTRIB newFile
MODIFY newFile
MODIFY newFile
MODIFY newFile
已触发mv tmp/newFile new
事件。
在tmp文件夹中:
MOVE_TO
在新文件夹中:
CLOSE_WRITE:CLOSE newFile
MOVED_FROM newFile
但是,如果我通过SFTP使用RENAME方法移动文件,则不会。这些都是触发的事件:
在tmp文件夹中:
MOVED_TO newFile
在新文件夹中:
CLOSE_WRITE:CLOSE newFile
DELETE newFile
这是SFTP协议的一部分吗?是否可以在sftp中移动文件并实际触发MOVED_TO事件?
这是我正在使用的sftp客户端的实现: https://github.com/mscdex/ssh2-streams/blob/55fd9c36b6dca8dbf0588a1d6f450b85c784dc72/lib/sftp.js 我正在使用openssh-sftp-server作为服务器