ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Как я могу увидеть изменения каталога в Python?

Как установить Python 3 на Ubuntu 16.04 LTS

В некоторых случаях, особенно в критических и ограниченных местах файловой системы, может быть полезно знать, когда что-то изменилось и что изменилось. Используя инструменты Linux Inotify и Python, мы можем просматривать и регистрировать изменения, происходящие в системе.

В этом руководстве будет рассмотрено, как реализовать простой скрипт, который использует Python и Linux Inotify API для отслеживания изменений в определенном каталоге и регистрации изменений консоли.

Прежде чем мы перейдем к сценарию, давайте кратко обсудим, как работает Inotify.

 

Что такое Inotify? Как это работает?

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

Хотя Inotify мощный, у него есть некоторые ограничения. Эти ограничения включают:

Однако Inotify по-прежнему является гораздо лучшим выбором, чем его предшественник Dnotify. Inotify широко применяется в приложениях безопасности, таких как антивирусы.

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

 

Установка Python и Watchdog

Прежде чем погрузиться в код, давайте установим несколько требований, таких как установка Python и пакета watchdog.

Чтобы установить Python3 в Debian, используйте команду apt как:

sudo apt-get update

sudo apt-get install python3.7 python3-pip -y

Чтобы установить пакет watchdog, используйте команду pip3, как показано ниже:

https://pypi.org/project/watchdog/

sudo pip3 install watchdog

Написание сценария

Скрипт, который мы создадим в этом уроке, очень прост. Рассмотрим исходный код, показанный ниже:

import sys
import logging
import time
from watchdog.events import LoggingEventHandler
from watchdog.observers import Observer


def monitor():
# Добавить базовую конфигурацию
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(message)s",
datefmt="%Y-%m-%d %H:%M:%S")
# Получить каталог в качестве аргумента
path = sys.argv[1] if len(sys.argv) > 1 else '.'
e_handler = LoggingEventHandler()
watch = Observer()
watch.schedule(e_handler, path, recursive=True)
watch.start()
try:
while True:
time.sleep(2)
except KeyboardInterrupt:
watch.stop()
watch.join()
monitor()

 

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

Затем мы переходим к созданию объекта Observer и настраиваем его для рекурсивного отслеживания изменений в указанном каталоге, если не встречается прерывание клавиатуры (CTRL + C)

Наконец, мы вызываем функцию и запускаем скрипт.

 

Заключение

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

Exit mobile version