比较从zip文件中提取的zip文件和目录的最简单方法是什么?我想删除压缩文件,如果他们是相同的。
示例。需要检查Archive.zip和travel_photos/目录是否包含相同的文件(也就是说,Archive.zip中的所有文件都已正确提取到travel_photos/中)。
限制。我无法更改归档创建和提取的方式。这些文件是交给我的,我需要以后再查一下。这意味着,我不能创建一个包含Archive.zip中所有文件的校验和的文件。
Require.我不想从travel_photos/创建另一个zip存档,因为我需要处理大目录,而且可能没有足够的空间来编写其他的大文件。由于这个原因,下面的第2-5点不是很好,虽然我试过看什么可能有用。
What到目前为止我已经试过了。
md5sum Archive.zip和(cd travel_photos; zip -rqq - *) | md5sum,(cd travel_photos; zip -rqq ../test.zip *); md5sum test.zip和md5sum Archive.zip,unzip -p test.zip | md5sum和unzip -p Archive.zip | md5sumzcmp test.zip Archive.zip (也与zdiff一起)unzip -vql test.zip | sort -k8 | md5sum和unzip -vql Archive.zip | sort -k8 | md5sumPartial解决方案.如果我更改上面的最后一个示例以删除Cmpr和Size字段(尽管文件完全相同,但这两个档案中的文件大小却是不同的?)并从前两行中移除总存档大小,然后我可以验证存档是否相同。
diff -W200 -y <(unzip -vql test.zip | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) <(unzip -vql Archive.zip | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) --suppress-common-lines这个解决方案的缺点是我需要创建test.zip并将其保存到磁盘中。是否有一种方法可以在目录travel_photos/和zipfile Archive.zip之间进行比较?我试图按下面的方式传输zip命令的输出,但是它没有工作。
diff -W200 -y <(unzip -vql Archive.zip | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) < ((cd travel_photos; zip -rqq - *) > unzip -vql | sort -k8 | awk '{if(NR>2) print ($1"\t"$2"\t"$5"\t"$6"\t"$7"\t"$8)}' ) --suppress-common-lines发布于 2023-03-06 14:11:53
您可以使用"folderdiff“(https://pypi.org/project/folderdiff/)将文件夹的内容与ZIP存档的内容进行比较,而无需将文件存储到磁盘。
还可以比较两个ZIP档案的内容。
创建"folderdiff“是为了将was应用程序(例如wordpress)与可信的源进行比较,并找到可以包含后门的修改或添加的文件。
对于每个文件,计算一个SHA256散列,并与受信任的源进行比较。“折叠式”需要两个参数。第一个是受信任的源,第二个是文件夹,应该将其与受信任的源进行比较。
下面的示例演示如何在现有wordpress安装中查找后门:
$ folderdiff wordpress-6.0.3-de_AT.zip /var/www/ --prefix wordpress/
===================== Added ======================
+ webshell.php
==================== Modified ====================
* index.php披露:我是“折叠式”的作者
https://unix.stackexchange.com/questions/677135
复制相似问题