Найти - Пользователи
Полная версия: Монитор изменения файлов
Начало » Python проекты » Монитор изменения файлов
1
hendrix
Описание
Программа позволяет отслеживать изменения выбранного набора файлов за счет вычисления и сравнения md5.
Получить из svn
svn co svn://svn.free-node.ru/utils/ckmon
Настройка:
Создать конфигурационный файл вида (в репозитории лежит этот пример ckmon.rules):
# Файл конфигурации для монитора изменения файлов

# Параметр store указывает файл в котором стоит сохранить базу изменений файлов
store ./ckmon.db # как бы тут тоже можно писать камменты

# Параметр log указывает файл, в который программа положит историю изменений в файлах
log ./ckmon_log

# Включение директории для мониторинга
# Допустимы следующие директивы:
# Включить путь: include <path>
# Игнорировать путь: ignore <path>
# Все пути, включая путь к директории для мониторинга могут содержать регулярное выражение
# Приоритетным считается вырожение ignore
<directory /home/Times/projects/invader>
include *.py
ignore robots.txt
ignore settings.py
include invander.db
</directory>

#<directory /usr/home/hendrix/forum.ksd-nsk.ru/>
# include *.php
# ignore robots.txt
# ignore temp.php
# include .htaccess
#</directory>
Использование
Достаточно просто с необходимой периодичностью выполнять:
python ckmon.py ckmon.rules
Изменения будут сохранятся в лог-файл (параметр log), а текущее состояние находится в файле (параметр store).
Lexander
Кросплатформенная штука?
Для Unix/Linux есть http://www.python.org/doc/2.6/library/logging.html#watchedfilehandler
hendrix
Да, это маленькое кросплатформенное приложение.
WatchedFileHandler (класс на который ведет ссылка) - это штука для несколько иных целей.
Мое приложение просто создает список файлов обозначенных в конфиге, вычисляет для каждого md5 и вместе с путем заносит в базу. База это просто текстовый файлик, напирмер:
%%
revision: 2009-09-30 02:13:20.071244
d41d8cd98f00b204e9800998ecf8427e /home/Times/projects/invader/index.php
044a87e102dcffcc971b9ffba54f2b27 /home/Times/projects/invader/robots.txt
При последующем запуске приложение опять проходит по всем файлам и подсчитывает md5, если md5 не совпадают то база обновляется а факт изменения(или появления/удаления файла) протоколируется в лог файле. К примеру:
%%
revision: 2009-09-30 02:13:17.068243
del d41d8cd98f00b204e9800998ecf8427e /home/Times/projects/invader/index.php
new d41d8cd98f00b204e9800998ecf8427e /home/Times/projects/invader/index_.php
mod 9faca22b3a86e0766eaed49a5cb702d6 /home/Times/projects/invader/changelog.txt
Vaal
а этот svn еще доступен? у меня не получилось к нему подцепиться
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB