如何比较两个 tar 档案(包括文件内容、新/删除的文件、符号链接)?
Posted
技术标签:
【中文标题】如何比较两个 tar 档案(包括文件内容、新/删除的文件、符号链接)?【英文标题】:How to compare two tar archives (including file content, new/removed files, symlinks)? 【发布时间】:2013-11-12 13:19:10 【问题描述】:我有两个 tar 档案(压缩或未压缩),我想找出这两个档案中的所有差异。两个档案都包含一个完整的文件系统(即解压缩时,会生成像/bin
、/home
、/root
、/usr
、/var
、/etc
、...我希望你明白这一点) .我想要以下列表:
我不能只解压这些档案并使用diff
,因为 diff 无法正确识别绝对符号链接(因为它们会指出档案的文件系统结构)。
还有其他方法可以比较两个 tar 档案的内容吗?
【问题讨论】:
您可以使用 python 枚举每个 tar 存档的内容。这不是一个真正的答案。这是一个使用方向。要让它正常工作需要付出不小的努力 如果没有办法在一行中做到这一点,那就没有了。我只是想听听专家的意见,如果这样的工具存在或者可以通过一些标准的 unix 工具组合在一起。 我还没有想过,但是rsync
有很好的递归比较能力。所以,你可以试试rsync -nPavH <unpacked-tar-1> <unpacked-tar-2>
,看看你能不能合理地解析它的输出。另外,如果这是朝着正确的方向发展,我认为还有librsync
。
这是***.com/questions/1030545/… 的副本吗?那里提到的一些实用程序(pkgdiff、archdiff)可能很好。
Unix 和 Linux 上的相同问题:unix.stackexchange.com/q/100889/34251
【参考方案1】:
我能想到的最好的就是使用:
tar -tvf archive.tar
列出文件的内容。
类似:
tar -tvf archive1.tar > list1
tar -tvf archive2.tar > list2
diff list1 list2
【讨论】:
这不会检查每个文件中的差异。 不,虽然比较大小和时间戳可能是一个好的开始。以上是关于如何比较两个 tar 档案(包括文件内容、新/删除的文件、符号链接)?的主要内容,如果未能解决你的问题,请参考以下文章