Подтвердить что ты не робот

Лучший способ отслеживать изменения файловой системы в Linux

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

Какие мои исследования найдены

dnotify пришел первым с уведомлением, имеет функции уведомления для удаления, изменения, доступа, атрибутов, создания, перемещения, может определять дескриптор файла, однако теперь устарел от inotify и fanotify

inotify вышел на второй момент с уведомлением, имеет функции уведомления доступа, изменения, атрибута, закрытия, перемещения, удаления, создания и т.д. Однако он не дает вам файловый дескриптор или процесс и будет устаревшим с помощью fanotify

fanotify является последним, который информирует о доступе, изменении, закрытии, но не сообщает об удалении или атрибутах, но предоставляет файловый дескриптор

Мне нужен способ определения процесса (например, из fd) и таких вещей, как удаление, изменение, атрибуты и т.д., чтобы синхронизировать все, любые предложения? К сожалению, dnotify кажется лучшим, но наиболее устаревшим

4b9b3361

Ответ 1

Вы должны использовать библиотеку вместо inotify и друзей - что-то вроде FAM или Gamin (это тот же API для обоих). Это сделает вашу программу переносимой для других Unix.

Ответ 2

Там есть хороший lib, содержащий файловые дескрипторы или процесс с inotify. У него есть собственный API C и утилита inotifywatch (хорошо для скриптов), все в пакете inotify-tools.

Я категорически не согласен с тем, что fanotify будет устаревать inotify.

FAM и gamin - очень хорошие параметры сервера/клиента. Оба они используют inotify как первый вариант для устаревших dnotify и опросов. Я предпочитаю gamin.

Ответ 3

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

http://inotify.aiken.cz/?section=incron&page=about&lang=en

в ubuntu

sudo apt-get install incron

/etc/incron.d/mynotification.conf

# notification for user creation
/home IN_ALL_EVENTS /opt/notify_user_created.sh $#