Country
    Главная   →   Блог   →   Мониторинг файловой активности в ОС Linux

    Мониторинг файловой активности в ОС Linux

    В процессе работы возникает множество задач, связанных с построением приложений, активно взаимодействующих с файловой системой для отслеживающих изменение файлов и каталогов. При их решении необходимо обеспечивать обработку происходящих с файлами изменений, которая, в свою очередь, должна быть оперативной и минимальной с точки зрения ресурсозатрат. Пример такого рода приложений — сервис DropBox, который должен оперативно обрабатывать все изменения внутри отведенного ему каталога, затрачивая минимум системных ресурсов.

    Допустим, мы хотим написать некое приложение (или вебсайт), похожее на DropBox, которое должно работать в ОС Linux. Традиционно такое приложение состоит из 2-х подсистем – серверной и клиентской.

    Серверная подсистема хранит файлы, производит авторизацию пользователя, обеспечивает синхронизацию изменений файлов, решение конфликтов, экспорт файлов, ведение версионности и т.д.

    Клиентская подсистема обеспечивает доступ абонента к файлам, отслеживает локальные изменения и уведомляет о них серверную сторону. Ключевая проблематика клиентской части – отслеживание изменений файлов. Таким образом, самой важной, ключевой частью нашего приложения, должна стать подсистема отслеживания изменений файловой системы на стороне клиента.

    Требования к данной подсистеме:

    - Оперативность обработки изменений.

    - Минимальность потребляемых ресурсов.

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

    Решение «в лоб» – это периодический опрос части файловой системы со сверкой контрольных сумм файлов. Для этого мы должны обойти каждый элемент из интересующего каталога, затем выяснить его данные (атрибуты, контрольную сумму и т.д.) и сделать вывод о наличии изменения в искомом каталоге.

    В начале работы приложения операция такого рода может быть оправдана, но затем такие «опросы» оказываются слишком ресурсоемкими и могут усложнять администрирование сервера. Поэтому необходимо использовать некое автоматизированное решение, которое бы производило определенные операции только при наличии изменений. В ОС Linux – это Inotify.

    Inotify – это подсистема ядра Linux, отслеживающая изменения файловой системы и мгновенно отправляющая необходимым приложениям соответствующие события (удаление, чтение, запись и даже демонтирование). Среди прочего также можно отслеживать исходную и конечную точки перемещения.

    Inotify генерирует события:

    1. IN_ACCESS Самое минимальное обращение к файлу
    2. IN_ATTRIB Изменение метаданных (к примеру — прав)
    3. IN_CLOSE_WRITE Файл, который был открыт для записи — закрыт
    4. IN_CLOSE_NOWRITE Файл, который был открыт не для записи — закрыт
    5. IN_CREATE Создание файла/директории
    6. IN_DELETE Удаление файла/директории
    7. IN_DELETE_SELF Удаление файла/директории, который является «точкой наблюдения»
    8. IN_MODIFY Изменение файла
    9. IN_MOVE_SELF Изменение файла/директории, который является «точкой наблюдения»
    10. IN_MOVED_FROM Перемещение файла из каталога наблюдения в некую область вне наблюдения
    11. IN_MOVED_TO Перемещение файла из некой области в каталог наблюдения
    12. IN_OPEN Открытие файла

    Именно благодаря использованию таких событий и удается решить поставленную задачу.

    Следите за нами в:

    Если у вас есть вопросы или же вы хотели бы сделать запрос на разработку мобильного приложения, дизайна или адаптивного веб сайта - пожалуйста, используйте эту форму Форма обратной связи.

    Next Posts
    53931284ad675d62932e2d26457249058d87eb91 Мобильные приложения: нативные, веб и гибридные
    Компании, которые думают о разработке мобильного...
    00bed15b93a7414d8325a4f9dd5becbe9c953ef4 Разработка мобильных приложений для игорного бизнеса
    Сквозь века казино остаются крайне популярными. Тысячи...