更新:如果可能的话使用 http

更新:如果可能的话使用 http

到目前为止,我使用过这一行/etc/fstab

/home/ftp_user /home/app_user/mounts/ftp_user  fuse.bindfs  mirror=app_user 0    0

这有效。他app_user可以访问文件,ftp_user就好像这些文件是他自己的文件一样。

现在我想使用 inotify。它app_user监听绑定挂载目录中的更改。

如果app_user触碰其中的文件它就会起作用/home/app_user/mounts/ftp_user

ftp_user但如果触碰了中的文件它就不起作用/home/ftp_user

有什么办法可以让它工作吗?

操作系统:仅限Linux。

更新:如果可能的话使用 http

如果可能的话,避免使用巧妙的 inotify 解决方案。通过 http 接收文件通常更好,因为您可以在接受文件之前验证文件。请参阅使用 http,避免使用 ftp/sftp/scp/rsync/smb/mail

答案1

你想实现的目标无法实现。
看看https://bindfs.org/并向下滚动到“已知问题”部分。您将看到

由于 FUSE 没有提供相关 API,因此不会触发 inotify 事件

您可以使用 inotify 来监视 /home/ftp_user,但在这种情况下,设置监视的用户将需要有该目录的访问权限。

答案2

反过来做也可以:

ftp_user 获取虚拟(已挂载)目录,而 app_user 保存真实目录。

/home/ftp_user /home/app_user/import/ftp_user  fuse.bindfs  mirror=ftp_user 0    0

在虚拟目录中创建新文件(例如/home/ftp_user/new.txt)。这会触发以用户身份运行的 inotify app_user。在此示例中,为创建了文件事件/home/app_user/import/ftp_user/new.txt

相关内容