У меня есть папка с ~ 10 000 подпапок.Может ли любой API или инструмент linux отслеживать любые изменения в любой папке ниже, например./SharedRoot или мне нужно настроить, например. inotify для каждой папки?
Может ли любой API или инструмент linux отслеживать любые изменения в любой папке ниже, например./SharedRoot или мне нужно настроить inotify для каждой папки? (т. е. я потеряю, если я хочу сделать это для папок 10k +). Я предполагаю, что да, так как я уже видел примеры этого неэффективного метода, например http://twistedmatrix.com/trac/browser/trunk/twisted/internet/inotify.py?rev=28866#L345
Моей проблема:
мне нужно держать время сортируется с самим последним активным «проектом» вверх верхней папкой.
Когда файл изменяется, каждая папка над этим файлом должна обновлять временную метку последнего изменения для соответствия файлу. Задержки в порядке. Открывая файл (обычно MS Excel) и снова закрывая его, дата файла может вскользь, а затем снова вниз. По этой причине мне нужно подождать, пока файл не будет закрыт, а затем остановите папку этого файла для проверки, и только спустя некоторое время я пойду и буду искать новейший файл в своей папке, так как filedate из файла запуска может уже возвращаются к исходной временной отметке с помощью Excel или аналогичных программ. Также в случае использования/создания нескольких файлов из одной и той же папки имеет смысл блокировать временную привязку родителей этих папок, чтобы, по крайней мере, получить кучу обновлений, свернутых в одно отложенное обновление.
Я ищу решение для Linux. У меня есть некоторый код, который может быть запущен на сервере окон, большинство функциональных очередей будет здесь: http://github.com/sesam/FolderdateFollowsFiles/blob/master/FolderdateFollowsFiles/Follower.vb
Доступные API: s
Родственник Inotify на окнах, ReadDirectoryChangesW, можно посмотреть папку и весь его поддерево; см. bWatchSubtree on http://msdn.microsoft.com/en-us/library/aa365465(VS.85).aspx
Samba?
Исходный источник samba - возможность, но, возможно, есть уже имеющиеся крючки? Другие возможности, такие как клиентская часть (различные версии Windows) и слежение за действиями файлов, чтобы рекурсивно обновлять папки?
Обновление: на самом деле это ~ 12 000 папок на NAS с памятью на 200 МБ, поэтому настройка часов на всех узлах, будь то его выполнение в первом или просто лениво, используя любой метод -r (рекурсивный) вариант командной строки на inotifywatch, похоже, что это не реально. Что мне действительно нужно, это некоторые подсказки о том, как атаковать другой путь, используя или помещая некоторые крючки в smbd. –
@Simon B. По умолчанию количество максимальных часов для каждого пользователя составляет 8192, поэтому 12 или даже 15 тысяч часов - это вовсе не необычно. Имейте в виду, что часы (и их пути) хранятся в пространстве _kernel_. На самом деле проблема заключается не в том, что память доступна в пользовательском пространстве, а в производительности, достигнутой в VFS на NAS-сервере. Если смотреть только каталоги, это не должно быть слишком плохо. Кстати, я правильно прочитал, 200 МБ бара на NAS? –
Да. Мы используем «Netgear ReadyNAS Duo», и при совершении покупок мы действительно не ожидали, что будем хранить всю структуру папок в памяти ... кроме того, при обычном использовании реальным узким местом на Duo является мощность процессора. –