2015-05-11 5 views
0

Я разрабатываю небольшое приложение для обмена фотографиями Rails, которое будет считывать и отображать фотографии из библиотеки фотографий в локальной файловой системе.Рубиновый процесс для индексирования файлов в файловой системе linux

Во избежание сканирования файловой системы каждый раз, когда пользователь загружает страницу, я хочу настроить часовое задание cron, которое индексирует все файлы и сохраняет его в локальной таблице MySQL.

Каков наилучший способ сканирования локальной файловой системы и хранения метаданных о локальных файлах (например, размер, тип файла, измененная дата и т. Д.)? Есть ли удобная рубиновая библиотека? Я также хотел бы «посмотреть» файловую систему, чтобы узнать, когда файлы исчезли со времени последнего сканирования, чтобы их можно было удалить из моей таблицы.

Спасибо!

ответ

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 не называется, чтобы узнать данные были дописал в файл.

+0

Именно то, что я искал, спасибо! – user2490003

Смежные вопросы