Назад | Перейти на главную страницу

Как сравнить каталог / файлы и разрешения в Windows?

Есть ли инструмент или команда, которая сравнивает два дерева каталогов на разных компьютерах и выводит список различий, включая различия в разрешениях?

Я смотрел на http://winmerge.org/ и, похоже, у него не было этой функции (похоже, он сравнивает размеры и содержимое файлов, но не атрибуты). Просмотрел варианты, но не нашел настройки, чтобы изменить это.

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

Вы думали об использовании PowerShell для этого?

PS2 включает командлет Get-ACL который перечисляет разрешения NTFS (включая владельца) для данной папки / файла.

Не могу найти ничего, что могло бы выполнять «различие» в разрешениях файлов в Windows, но я знаю, что RoboCopy и Richcopy (http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx?pr=blog) будет копировать файлы с сохранением атрибутов NTFS, таких как разрешения.

Ты можешь использовать ICACLs.exe, Включено с Vista или около того для сброса разрешений в текстовый файл. Затем используйте WinDiff или Beyond Compare, или любой другой любимый инструмент сравнения файлов, чтобы увидеть различия.

Пример командной строки icacls:

icacls C:\Folder1 /T > Folder1.txt

Попробуйте специальные инструменты

Наверное, стоит посмотреть на:

Ноты:

  • 1-й может сканировать дерево папок и создавать отчет о разрешениях, который можно сохранить в Excel (имея 2 отчета, вы можете сравнить их в Excel),
  • 2-й может копировать разрешения ...

К сожалению, эти 2 не бесплатны и не делают именно то, что вы хотите, но могут быть полезны для вашей задачи ...

AFAIK нет готового инструмента, который может легко и удобно выполнять сравнение / копирование разрешений NTFS, несмотря на существующий спрос :)

я очень рекомендую setacl. Это бесплатный инструмент, который можно получить по адресу helgeklein.com.

Чтобы сравнить два каталога, я сделал это:

  • Составьте список всех ACL в обеих папках
  • Список в текстовом формате по:
    setacl -ot file -on FolderA -actn list -lst "f:tab" > AclsFolderA.txt  
    setacl -ot file -on FolderB -actn list -lst "f:tab" > AclsFolderB.txt
    
  • Сравните 2 списка. Я делаю это с diff из CygWin:
    diff AclsFolderA.txt AclsFolderB.txt
    

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