首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较zip文件和解压缩目录

比较zip文件和解压缩目录
EN

Unix & Linux用户
提问于 2021-11-11 21:11:46
回答 1查看 559关注 0票数 2

比较从zip文件中提取的zip文件和目录的最简单方法是什么?我想删除压缩文件,如果他们是相同的。

示例。需要检查Archive.ziptravel_photos/目录是否包含相同的文件(也就是说,Archive.zip中的所有文件都已正确提取到travel_photos/中)。

限制。我无法更改归档创建和提取的方式。这些文件是交给我的,我需要以后再查一下。这意味着,我不能创建一个包含Archive.zip中所有文件的校验和的文件。

Require.我不想从travel_photos/创建另一个zip存档,因为我需要处理大目录,而且可能没有足够的空间来编写其他的大文件。由于这个原因,下面的第2-5点不是很好,虽然我试过看什么可能有用。

What到目前为止我已经试过了。

  1. 比较md5sum Archive.zip(cd travel_photos; zip -rqq - *) | md5sum
  2. 比较(cd travel_photos; zip -rqq ../test.zip *); md5sum test.zipmd5sum Archive.zip
  3. 比较unzip -p test.zip | md5sumunzip -p Archive.zip | md5sum
  4. zcmp test.zip Archive.zip (也与zdiff一起)
  5. unzip -vql test.zip | sort -k8 | md5sumunzip -vql Archive.zip | sort -k8 | md5sum

Partial解决方案.如果我更改上面的最后一个示例以删除CmprSize字段(尽管文件完全相同,但这两个档案中的文件大小却是不同的?)并从前两行中移除总存档大小,然后我可以验证存档是否相同。

代码语言:javascript
复制
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命令的输出,但是它没有工作。

代码语言:javascript
复制
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
EN

回答 1

Unix & Linux用户

发布于 2023-03-06 14:11:53

您可以使用"folderdiff“(https://pypi.org/project/folderdiff/)将文件夹的内容与ZIP存档的内容进行比较,而无需将文件存储到磁盘。

还可以比较两个ZIP档案的内容。

创建"folderdiff“是为了将was应用程序(例如wordpress)与可信的源进行比较,并找到可以包含后门的修改或添加的文件。

对于每个文件,计算一个SHA256散列,并与受信任的源进行比较。“折叠式”需要两个参数。第一个是受信任的源,第二个是文件夹,应该将其与受信任的源进行比较。

下面的示例演示如何在现有wordpress安装中查找后门:

代码语言:javascript
复制
$ folderdiff wordpress-6.0.3-de_AT.zip /var/www/ --prefix wordpress/
===================== Added ======================
+ webshell.php
==================== Modified ====================
* index.php

披露:我是“折叠式”的作者

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/677135

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档