File Manager — это многопоточное приложение для непрерывного мониторинга изменений и целостности группы файлов в системе Linux. Программа обнаруживает изменения в файлах, используя как периодическую проверку, так и механизм inotify (если доступен), обеспечивая надёжное отслеживание модификаций, удалений, переименований и перемещений файлов.
- Гибридный мониторинг: использует как inotify для мгновенного обнаружения событий, так и периодическую проверку для надёжности
- Многопоточность: параллельная обработка для эффективного мониторинга большого количества файлов
- Проверка целостности: вычисление SHA-256 хешей для обнаружения изменений в содержимом файлов
- Рекурсивное сканирование: обработка директорий и поддиректорий для мониторинга файлов
- Отслеживание новых файлов: обнаружение и мониторинг новых файлов в наблюдаемых директориях
- Гибкая настройка: конфигурационный файл для тонкой настройки параметров
- Система логирования: журналирование событий в syslog, консоль или отдельный файл
- Linux-совместимая операционная система
- GCC компилятор
- make
- Библиотеки OpenSSL (для вычисления хешей)
- Библиотека pthread (для многопоточности)
-
Клонируйте или скачайте репозиторий:
git clone https://github.com/deliriumTBOI/file_monitor.git cd file_monitor -
Скомпилируйте программу:
make -
Создайте конфигурационный файл (если отсутствует):
make config -
Установите программу в систему (опционально):
sudo make install
Установите необходимые зависимости:
sudo apt-get install build-essential libssl-dev
sudo dnf install gcc make openssl-devel
Запустите программу с указанием файлов или директорий для мониторинга:
./bin/file_monitor file1.txt /path/to/directory
Использование: ./bin/file_monitor [-c config_file] [-i interval] [-t threads] [-h] [file/dir ...]
-c config_file: путь к файлу конфигурации (по умолчанию: file_monitor.conf)
-i interval: интервал проверки в секундах (по умолчанию: 5)
-t threads: количество потоков (по умолчанию: 4)
-h: вывод этой справки
Параметры программы можно настроить в файле конфигурации file_monitor.conf:
# Интервал проверки в секундах
check_interval = 5
# Количество потоков для мониторинга
thread_count = 4
# Использовать inotify для отслеживания изменений (1 - да, 0 - нет)
use_inotify = 1
# Рекурсивное сканирование директорий (1 - да, 0 - нет)
recursive_scan = 1
# Использовать syslog для журналирования (1 - да, 0 - нет)
use_syslog = 0
# Уровень логирования (0 - INFO, 1 - WARNING, 2 - ERROR)
log_level = 0
# Файл для записи журнала (пустой - не использовать файл)
log_file = file_monitor.log
# Отслеживать новые файлы в директориях (1 - да, 0 - нет)
watch_new_files = 0
./bin/file_monitor /etc/nginx
./bin/file_monitor -i 10 /var/www/html
./bin/file_monitor -c /etc/myapp/filemon.conf /path/to/important/files
./bin/file_monitor /etc/passwd /etc/shadow /etc/ssh/sshd_config
make debug
make memcheck
make clean
Программа выводит подробные сообщения о событиях:
- Обнаружение изменений в файлах с отображением старого и нового хешей
- Обнаружение удаления или переименования файлов
- Добавление новых файлов для отслеживания (если включена соответствующая опция)
File Monitor использует гибридную архитектуру мониторинга:
- Компонент inotify: тредом обрабатываются события файловой системы в реальном времени
- Компонент периодической проверки: несколько тредов периодически просматривают файлы для обнаружения изменений
- Компонент расчёта хешей: используется OpenSSL для вычисления SHA-256 хешей
Программа разработана для эффективной работы даже при большом количестве отслеживаемых файлов. Основные оптимизации:
- Многопоточная обработка для распределения нагрузки
- Использование inotify для моментального реагирования без необходимости частой проверки
- Эффективное управление ресурсами с автоматической очисткой
- Проверьте права доступа к отслеживаемым файлам и директориям
- Убедитесь, что значение
check_intervalне слишком большое - Проверьте лог-файл на наличие ошибок
- Уменьшите количество отслеживаемых файлов
- Увеличьте значение
check_interval - Уменьшите количество потоков через
thread_count