Есть ли инструмент или команда, которая сравнивает два дерева каталогов на разных компьютерах и выводит список различий, включая различия в разрешениях?
Я смотрел на 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
Наверное, стоит посмотреть на:
Ноты:
К сожалению, эти 2 не бесплатны и не делают именно то, что вы хотите, но могут быть полезны для вашей задачи ...
AFAIK нет готового инструмента, который может легко и удобно выполнять сравнение / копирование разрешений NTFS, несмотря на существующий спрос :)
я очень рекомендую setacl
. Это бесплатный инструмент, который можно получить по адресу helgeklein.com.
Чтобы сравнить два каталога, я сделал это:
setacl -ot file -on FolderA -actn list -lst "f:tab" > AclsFolderA.txt
setacl -ot file -on FolderB -actn list -lst "f:tab" > AclsFolderB.txt
diff
из CygWin: diff AclsFolderA.txt AclsFolderB.txt
У меня возникла проблема со сравнением двух пользовательских папок. Эти папки должны были иметь идентичные ACL, за исключением пользователя, который принадлежащий Папка.
Я решил это, заменив имя пользователя в ACL обычным именем клиент. Это позволило мне сравнить ACL без очевидной разницы в самом имени пользователя.