目录内容差异

时间:2009-12-01 09:29:02

标签: file directory

我正在寻找解决两个目录之间差异问题的现有想法/解决方案。具体如何识别可能已更改,重命名和移动的文件。

我考虑过的简短列表:

  • 尝试配对目录A中缺少的文件 使用一些在dir b中的新文件 启发式如75%匹配 内容。这似乎没有 足够强大(问题案例包括: 内容发生重大变化, 压缩或加密,可能 多场比赛)
  • 使用替代数据流为每个文件添加id。这只适用于NTFS。
  • 为包含和id的每个文件添加页眉/页脚。没有办法保证页眉/页脚不会破坏文件。
  • 询问每次更改的用户输入,以确定文件是否确实已删除或只是移动。这对用户来说太难了。
  • 要求用户仅使用特殊命令重命名/移动文件,这些命令将跟踪此类更改。这对用户来说太难了。
  • 设置文件系统观察程序以即时捕获更改。几个问题(观察者必须始终运行,特定于平台......)

欢迎任何想法......

4 个答案:

答案 0 :(得分:1)

一个可能的,不完美的解决方案是版本控制系统,如svn或git。这样,所有更改历史记录都可用。但是用户必须使用特定的命令。

答案 1 :(得分:0)

为什么不简单地计算文件夹内容的MD5 / SHA-1或其他哈希计算?

http://en.wikipedia.org/wiki/MD5

为A和B构建文件/文件夹列表。 比较A中存在但不存在于B. 比较B螺母中不存在于A中的情况。 对于A和B都存在的那些,执行哈希计算。

答案 2 :(得分:0)

对于内容匹配,我建议使用某种分布式版本控制系统,例如git

它几乎可以检测所有文件操作,例如复制,移动,重命名......

答案 3 :(得分:0)

尝试pkgdiff可视化目录之间的差异:

pkgdiff -d DIR-0/ DIR-1/

该工具检测添加/删除/重命名/移动的文件和更改的内容。该工具是开源的,因此您可以配置个人匹配率以识别已移动/重命名的已更改文件。

enter image description here

enter image description here