如何区分两个文件系统状态的 md5 总和?

How to diff md5 sums of two filesystem states?

我正在收集 md5sum 同一文件系统在两个不同时间点的快照。 (即,感染前后。)我需要 diff 这两个状态,以便及时查看这两个时间点之间哪些文件发生了变化。

为了收集这些状态,我可能会执行以下操作(在关闭 SIP 的 macOS 上):

sudo gfind / ! -path '*/dev/*' ! -path '*/Network/*' ! -path '*/Volumes/*' ! -path '*/.fseventsd/*' ! -path '*/.Spotlight-V100/*' -type f -exec md5sum {} \; > $(date "+%y%m%d%H%M%S").system_listing

我遇到的问题是生成的文件每个大约 100MB,单独使用 diff 似乎比较块而不是输出中每个单独文件的 md5sum

是否有使用 diff 工具执行此操作的有效方法,或者是否有必要编写脚本以某种方式根据文件名路径比较两个文件,有效地重新创建 diff 以比较具有路径的行唯一的比较器值,然后 return 信息基于关联的 md5sum?

外观运行目录顺序可能会产生很多嘈杂的差异
例如我 运行 以下两个命令,比较两个充满 pdf 的目录。
一个有1个文件,另一个有几十个文件 交换目录顺序产生 2 个差异行,
相反,我们希望 diff 报告没有 diff 的事实。

find books/ docs-pdf/ -type f  -exec  md5sum {} \; > snapshot1
find  docs-pdf/ books/ -type f  -exec  md5sum {} \; > snapshot2

diff snapshot1 snapshot2
--- snapshot1
+++ snapshot2
@@ -1,4 +1,3 @@
-83322cb1aaa94f9c8e87925f9d2a695e  books/ModSimPy.pdf
 192e5d38e59d8295ec9ca715e784a6d0  docs-pdf/c-api.pdf
 76c5bfb41bc6e5f9c8da1ab1f915e622  docs-pdf/distributing.pdf
 0a630ec314653c68153f5bbc4446660c  docs-pdf/extending.pdf
@@ -25,3 +24,4 @@
 31e3dc3f78a12c59cdc0426d8e75ec99  docs-pdf/tutorial.pdf
 4c59e969009b6c3372804efdfc99e2d9  docs-pdf/using.pdf
 cf5330f4ed5ca5f63f300ccfa3057825  docs-pdf/whatsnew.pdf
+83322cb1aaa94f9c8e87925f9d2a695e  books/ModSimPy.pdf


按第 2 列排序后,diff 成功报告,没有 diff

sort  -k2  snapshot1 >sorted.snapshot1 
sort  -k2  snapshot2 >sorted.snapshot2
diff sorted.snapshot1 sorted.snapshot2

如果这不能解决所有嘈杂的 diff 输出,请 post 删除您不想要的示例输出