我正在开发一个小型照片共享Rails应用程序,它将从本地文件系统上的照片库中读取和显示照片。
为了避免每次用户加载页面时扫描文件系统,我想设置一个每小时的cron作业,索引所有文件并将其存储在本地MySQL表中。
扫描本地文件系统和存储有关本地文件的元数据(例如大小,文件类型,修改日期等)的最佳方法是什么?有一个方便的基于ruby的库吗?我还希望能够“观察”文件系统以了解自上次扫描后文件何时消失,以便可以从我的表中删除它们。
谢谢!
答案 0 :(得分:1)
您需要查看inotify
。
https://github.com/nex3/rb-inotify
您可以在文件或目录中设置watch
(在Linux内核中注册回调),并且每当该文件/目录中的某些内容发生更改时,内核都会立即通知您列出的内容改变。
此处列出了常见事件:https://en.wikipedia.org/wiki/Inotify
您会注意到IN_CREATE
+ IN_DELETE
是您要查找的事件。
旁注:IN_CREATE
只创建文件(它仍为空),您需要等到IN_CLOSE_WRITE
被调用,才能知道数据写完文件