Как следить за изменениями файлов и папок в Windows. Как отследить изменения в файлах и папках Фиксация изменения файлов на компьютере

Мы 4 друга, работающие над проектом. Каждый работает отдельно на компьютере (Windows), и все файлы хранятся на общем сетевом диске на одном из ПК.

Мы хотим отслеживать изменения, внесенные в файлы / папки на этом диске. Изменения как:

  • Новый файл / папка
  • Удаление файла / папки
  • Переименование файла / папки
  • Редактирование / изменение файла

и с этими параметрами:

  • Дата / время изменения
  • Пользователь (который внес изменение)

Я гуглил по этой проблеме и нашел много приложений. Есть проблемы почти со всеми из них:

    Некоторые из этих приложений не записывают изменения прошедшего времени в автономном режиме. Например, представьте, что я не в офисе (и, следовательно, на моем компьютере не запущено программное обеспечение для мониторинга файлов / папок). Но мои друзья работают и вносят изменения в некоторые файлы / папки на общем сетевом диске. Я иду в офис и хочу точно знать, какие файлы / папки были изменены во время моего отсутствия (с момента последнего запуска программного обеспечения для мониторинга). У большинства этих приложений есть журналы, но они только регистрируют изменения событий, сделанные после запуска программного обеспечения. Они не отслеживают прошлое.

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

Единственное программное обеспечение, которое я нашел для этой цели - это DirectoryMonitor . Но его бесплатная версия не обнаруживает пользователя / процесс!

Знаете ли вы другое программное обеспечение?

Иззи ♦

Если вы открыты для веб-решения и монтируете ресурсы через WebDAV: ownCloud имеет встроенный протокол активности и даже сохраняет резервные копии измененных файлов (что-то вроде простого управления версиями). Проверяя «журнал активности» моей простой установки, он показывает «кто» сделал «что» и «когда» (например, «userX создал / изменил / удалил fileY в timestampZ»). Поскольку это записывается «сервером», не имеет значения, была ли ваша рабочая станция «в сети», когда один из ваших друзей вызвал изменение.

Omid1989

Спасибо @Izzy за ваш комментарий. Это хорошо, но я не хочу ограничиваться веб-отчетами. Потому что большинство наших данных хранятся локально.

Иззи ♦

Да я вижу. Еще одна грубая идея: Apache + WebDAV + SVN будет выполнять управление версиями на «общем диске» (опять же WebDAV). SVN - это система контроля версий, и при использовании ее через Apache с WebDAV и автоматической фиксацией у вас снова были версии, а также история, и вы могли запросить последнюю через CLI или GUI. Не уверен, что Apache + WebDAV + X имеет другой X-компонент, такой как Git или Mercurial, работающий таким же образом. Это было бы лучше?

Omid1989

Спасибо @Izzy за ваш комментарий. Это звучит как хорошее решение, но слишком сложное для меня!

Ответы

Стив Барнс

Похоже, что вам нужна полная VCS, система контроля версий , из которых есть несколько бесплатных. Точнее, вам нужен, DVCS, Распределенный VCS .

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

Лично для людей, не слишком знакомых с системами контроля версий, я бы настоятельно рекомендовал Mercurial, поскольку он не так сложен, как многие другие системы, но все же очень хорош, не должен иметь выделенного центрального сервера, является бесплатным и кроссплатформенным. Для интерфейса с графическим интерфейсом Windows для Mercurial есть TortoiseHG .

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

Основной набор команд, если вы используете hg, показан ниже:

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

Иззи ♦

Согласитесь, это также будет хорошим вариантом (назовите альтернативу: то, что вы написали на Mercurial, в основном соответствует Git 1: 1), но кроме «обычного файлового сервера», используемого в качестве «общего диска», нужно явно зарегистрируйтесь и нажмите, что может быть забыто.

Стив Барнс

@ Иззи - многие из тех, с кем я имею дело, считают, что hg менее запутан, чем git, поэтому я рекомендовал его, а не git.

Omid1989

Спасибо @SteveBarnes за подробный ответ. Я попробую TortoiseHG и посмотрю, как это работает.

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

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

WinDirStat

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

Преимущества WinDirStat

  • Доступная форма графической визуализации
  • Также работает в старых версиях Windows
  • Можно определить способ отображения элементов
  • Карты дерева

Недостатки:

  • Отсутствие возможности определения окраски большего числа типов файлов

Тип распространения : freeware
Цена : бесплатно

SpaceSniffer Portable

SpaceSniffer сканирует и показывает Вам содержимое выбранных дисков в удобном для чтения виде иерархической цветной схеме.

Преимущества SpaceSniffer

  • Не требует установки
  • Широкие возможности фильтрации данных, которые визуализируются

Тип распространения : freeware
Цена : бесплатно

TreeSize Free

Приложение TreeSize Free позволяет быстро просканировать содержимое любого носителя, а результаты отображаются в виде раскрывающегося дерева.

Преимущества TreeSize Free

  • Удобная сортировка по размеру, количеству файлов или папок
  • Справляется с альтернативными потоками данных файловой системы NTFS
  • Интерфейс адаптированный для сенсорных экранов

Недостатки:

  • Только в англоязычной версии

Тип распространения : freeware
Цена : бесплатно

JDiskReport

JDiskReport - для любителей статистики в виде диаграмм, напоминающих диаграммы из Excel. Вместо деревьев у нас тут гистограммы и круговые диаграммы.

Преимущества JDiskReport

  • Интересные графические схемы
  • Много различных статистических данных, в том числе разделение по размерам и дате создания
  • Доступна Java версия, которая работает на любой платформе с Java

Недостатки:

  • Версия для Windows требует установленной Java

Тип распространения : freeware
Цена : бесплатно

FolderSize

FolderSize выделяется окном сводки. Оно отображает диаграммы и список файлов или папок, которые можно сортировать по различным критериям.

Преимущества FolderSize

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

Недостатки:

  • Бесплатная версия не позволяет сканировать сопоставленные жесткие диски и сетевые

Тип распространения : freeware
Цена : бесплатно

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

В этом обзоре - популярные бесплатные программы, которые позволяют легко просмотреть изменения в реестре Windows 10, 8 или Windows 7 и некоторая дополнительная информация.

Бесплатная программа Registry Live Watch работает по несколько иному принципу: не путем сравнения двух образцов реестра Windows, а путем мониторинга изменений в режиме реального времени. Однако программа не отображает самих изменений, а лишь сообщает о том, что такое изменение произошло.

Скачать программу можно с официального сайта разработчика http://leelusoft.altervista.org/registry-live-watch.html

WhatChanged

Еще одна программа, позволяющая узнать, что изменилось в реестре Windows 10, 8 или Windows 7 - WhatChanged. Её использование очень похоже на таковое в первой программе этого обзора.

У программы нет собственного официального сайта, но она легко находится в Интернете и не требует установки на компьютер (на всякий случай перед запуском проверьте программу с помощью virustotal.com, при этом учитывайте, что в оригинальном файле есть одно ложное обнаружение).

Еще один способ сравнить два варианта реестра Windows без программ

В Windows присутствует встроенный инструмент для сравнения содержимого файлов - fc.exe (File Compare), который, в том числе, можно использовать и для сравнения двух вариантов ветвей реестра.

Для этого с помощью редактора реестра Windows экспортируйте необходимую ветвь реестра (правый клик по разделу - экспортировать) до изменений и после изменений с разными именами файлов, например, 1.reg и 2.reg.

Затем используйте в командной строке команду наподобие:

Fc c:\1.reg c:\2.reg > c:\log.txt

Где указаны сначала пути к двум файлам реестра, а затем - путь к текстовому файлу результатов сравнения.

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

Я бы хотел посвятить статью обзору API, предоставляемых разными ОС для слежения за изменениями в директории. Статья появилась как результат моей работы над демонами слежения за изменениями для утилиты dklab_realsync ( , github репозиторий) и своей собственной, которую я пока что не хочу анонсировать.

Windows, ReadDirectoryChangesW

Для операционной системы Windows есть замечательная функция ReadDirectoryChangesW , которая возвращает набор изменений для директории, в том числе содержит флаг для работы рекурсивно (bWatchSubtree). Таким образом, реализация слежения за изменениями в директории не представляет особого труда и в том же dklab_realsync реализация занимает 80 строк кода или 3.5 Кб. Интересно, что в Windows эти события поддерживаются даже через SMB!

Тем не менее, существуют определенные подводные камни:

  • конечный размер буфера изменений, после которого очередь событий переполнится и эти события будут потеряны
  • согласно документации к watchdog package , событие перемещения посылается раньше, чем изменения становятся видны в ФС
  • размер буфера ограничен в 64 Кб для сетевой ФС

Вывод: Функция ReadDirectoryChangesW позволяет легко узнавать обо всех событиях в файлах, но, очередь событий может переполниться и тогда нужно будет выполнять полное сканирование ФС. Также, возможна доставка событий до того, как они станут актуальны.

Mac OS X, FSEvents

В Mac OS X также есть удобный и простой API для слежения за изменениями в файловой системе под названием FSEvents . С использованием этого API простейшая реализация демона составляет 50 строк кода или 1.8 кб. Очередь не может переполниться (!), но полное сканирование все же может потребоваться, если демон fseventsd «упадет». Стоит отметить, что этот API до версии 10.7 не предоставляет изменения по файлам, он сообщает только директории, в которых что-то изменилось. Поскольку события никуда не деваются и пишутся в лог (FSEvents service stores events in a persistent, per-volume database), детализация с точностью для директории позволяет сэкономить место на диске.

Вывод: FSEvents API для Mac OS X является самым необычным из всех подобных API. Очередь не переполняется и даже имеется возможность получить события из прошлого. Тем не менее, детализация событий дается с точностью до директории (до версии 10.7), что означает меньшую эффективность демона для синхронизации файлов.

Linux, inotify

В linux vanilla kernel существует один способ слежения за изменениями в директории - это inotify . Для этого API существует хорошая и подробная документация, но нет поддержки рекурсивного слежения за изменениями! Также, у inotify есть ограничение на максимальное количество объектов, за которыми можно следить. Простейшая реализация демона занимает уже 250 строк кода или 8 кб. Статическая сборка с использованием dietlibc занимает примерно 14 кб. Другим неприятным моментом является то, что приложение должно само поддерживать соответствия между watch descriptor (в нашем случае это всегда директория) и именем. Есть функция inotify_add_watch , которой передается путь до отслеживаемой директории, но нет обратной - inotify_get_path, которая бы возвращала этот самый путь по переданному дескриптору. События же содержат только watch descriptor и относительный путь до изменившегося файла внутри директории.

Подводные камни рекурсивного слежения за директорией через inotify:

  • Возможность переполнения очереди (длина очереди задается в /proc/sys/fs/inotify/max_queued_events)
  • Ограничение на максимальное количество объектов слежения (задается в /proc/sys/fs/inotify/max_user_watches)
  • Отсутствие возможности рекурсивного слежения за директорией
  • Необходимость отдельно обрабатывать случай, когда создается директория (например mkdir -p a/b/c). Вы получите событие о том, что создана директория «a», но пока вы навешиваете обработчик на эту директорию, в ней уже могут создать ещё одну директорию и событие об этом вам уже не придет.
  • Теоретическая возможность целочисленного переполнения watch descriptor (wd), так как он задается uint32

FreeBSD, Mac OS X, kqueue

FreeBSD и Mac OS X позволяют отслеживать за изменениями с помощью kqueue, который аналогичен inotify по своим характеристикам и также не имеет возможности рекурсивного слежения за директориями. Также, kqueue принимает в качестве аргументов дескрипторы открытых файлов (директорий), поэтому при использовании этого API ограничения на количество отслеживаемых директорий ещё более строгие.

Итого:

Как можно видеть, у всех API существуют свои достоинства и недостатки. Наименее удобными являются механизмы kqueue и inotify, но они же являются самыми эффективными и надежными. Коммерческие ОС предоставляют более удобные механизмы слежения за изменениями, но у них тоже есть свои особенности. Надеюсь, теперь вы имеете больше представления о том, как тяжела участь Dropbox и подобных программ, которым требуется со всем этим уживаться и осуществлять надежную и эффективную синхронизацию данных:).

* Картинка взята с

В случае, если вы являетесь не единственным пользователем ПК, то после долгого неиспользования машины вам может понадобиться выяснить, какие именно произошли изменения за этот промежуток времени. Также могут быть ситуации, при которых жесткий диск показывает активность, но на самом деле не разобрать, занят он обработкой полезных процессов или это работает вредоносное ПО. Отследить изменения в файлах и получить актуальные данные обо всех изменениях в файловой системе вам поможет программа FolderChangesView.

FolderChangesView – это небольшая по размерам утилита, которая создана специально для отслеживания всех изменений, которые происходят с файлами и папками. Программа отображает в режиме реального времени все изменения, происходящие с файлами, а весь полученный результат показывается пользователю в удобной таблице. Скачать саму программу можно с официального сайта разработчика по ссылке (там же возможно скачать русификатор, который устанавливается простым перемещением в папку с приложением): http://www.nirsoft.net/utils/folder_changes_view.html

Настройка программы

Утилита не требует установки, ведь в архиве находится один лишь файл.exe. Рекомендуется создать отдельную папку для программы, скачать русификатор и закинуть эти два файла в нее. После запуска перед вами будет открываться меню конфигурации (если завершить работу с программой и открыть ее вновь, то меню снова появится перед вами).

Здесь вам необходимо выбрать диск, папки или целый раздел жесткого диска, который необходимо анализировать. При выборе папки оставляйте отмеченным пункт «Сканировать также подкаталоги». Вы также имеете возможность указать папки, мониторить которые нет необходимости: нужно указать путь к папке и поставить галочку напротив «Exclute the following folders».
Ну и в заключение из полезных настроек вы можете установить размер файлов, за которыми необходимо следить. После выбора этих основных настроек просто нажимайте «Ок» и процесс мониторинга за выбранными папками начнется.

Похожие статьи