Ruby进程索引linux文件系统上的文件

时间:2015-05-11 03:27:23

标签: mysql ruby-on-rails ruby linux filesystems

我正在开发一个小型照片共享Rails应用程序,它将从本地文件系统上的照片库中读取和显示照片。

为了避免每次用户加载页面时扫描文件系统,我想设置一个每小时的cron作业,索引所有文件并将其存储在本地MySQL表中。

扫描本地文件系统和存储有关本地文件的元数据(例如大小,文件类型,修改日期等)的最佳方法是什么?有一个方便的基于ruby的库吗?我还希望能够“观察”文件系统以了解自上次扫描后文件何时消失,以便可以从我的表中删除它们。

谢谢!

1 个答案:

答案 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被调用,才能知道数据写完文件