如何在 Windows 上比较目录/文件和权限?

如何在 Windows 上比较目录/文件和权限?

是否有一个工具或命令可以比较不同计算机上的两个目录树并输出差异列表,包括权限差异?

我当时正在看http://winmerge.org/但它似乎没有这个功能(它似乎比较文件大小和内容,但不比较属性)。查看了选项,但没有看到可以更改此功能的设置。

我过去遇到过一些问题,更新后某些驱动程序目录的权限出现混乱,将正常运行的安装与损坏的安装进行比较会很好。

答案1

您是否考虑过使用 PowerShell 来执行此操作?

PS2 包含一个 cmdletGet-ACL它枚举给定文件夹/文件的 NFTS 权限(包括所有者)。

答案2

您可以使用ICACL 实用程序自 Vista 起包含将权限转储到文本文件中。然后使用 WinDiff 或 Beyond Compare,或者任何您喜欢的文件比较工具来查看差异。

icacls 命令行示例:

icacls C:\Folder1 /T > Folder1.txt

答案3

在 Windows 中找不到任何可以对文件权限执行“差异”操作的东西,但我知道 RoboCopy 和 Richcopy(http://technet.microsoft.com/en-us/magazine/2009.04.utilityspotlight.aspx?pr=blog) 将复制文件同时保留 NTFS 属性(例如权限)。

答案4

我强烈推荐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
    
  • 比较这两个列表。我使用diffCygWin 执行此操作:
    diff AclsFolderA.txt AclsFolderB.txt
    

我在比较两个用户文件夹时遇到了问题。这些文件夹需要具有相同的 ACL,但用户除外拥有文件夹。
我通过将 ACL 中的用户名替换为通用名称来解决这个问题顾客。这使我能够比较 ACL,而不会在用户名本身上发现明显的差异。

相关内容