如何优雅地比较zip文件夹内容和解压缩的文件夹内容

Jim*_*mmy 6 python backup zip unzip

这就是场景.我希望能够使用python脚本备份文件夹的内容.但是,我希望我的备份以压缩格式存储,可能是bz2.

问题来自于,如果"current"文件夹中的内容与我最近的备份中的内容完全相同,我不想打扰备份文件夹.

我的过程将是这样的:

  1. 启动备份
  2. 根据最新的压缩备份中存储的内容检查"当前"文件夹的内容
  3. 如果相同 - 那么"完成"
  4. 如果不同,则运行备份,然后"完成"

任何人都可以推荐最可靠,最简单的方法来完成step2吗?我是否必须将备份的内容解压缩并存储在临时目录中以进行比较,或者是否有更优雅的方法来执行此操作?可能与修改日期有关吗?

cdl*_*ard 5

Zip 文件包含 CRC32 校验和,您可以使用 python zipfile 模块读取它们:http : //docs.python.org/2/library/zipfile.html。您可以从 ZipFile.infolist() 获取带有 CRC 成员的 ZipInfo 对象列表。ZipInfo 对象中还有修改日期。

您可以将 zip 校验和与解压文件的计算校验和进行比较。您需要阅读解压后的文件,但不必解压缩所有内容。

CRC32 不是加密校验和,但如果您只需要检查更改就足够了。

这适用于 zip 文件。其他存档格式(如 tar.bz2)可能不包含这种易于访问的元数据。