Meefik's Blog

Freedom and Open Source

Снимок файловой системы и поиск изменений

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

Формат запуска утилиты такой:

java -jar jcut.jar <directory> [snapshot.gz]

Пример использования (жесткий диск SATA 7.2k):

$ java -jar jcut.jar /path/to/dir
add /dir1 0
del /dir2 0
del /dir2/file1 1433802787000
mod /file1 1433802751000
Time: 3742 ms
Processed: 209846 items
Snapshot: 1384480 bytes

Скорость обработки линейно возрастает с увеличением числа файлов в директории.