如果我从 zip 文件中删除了某个东西,它还能恢复吗?

Red*_*Red 13 zip data-recovery

如果我从 zip 文件中编辑或删除了某些内容,它还能恢复吗?例如,我有这个压缩文件夹,在将其发送给某人之前,我将文件夹解压缩,然后使用我的计算机编辑和删除其中的一些文件,然后修改它后,我再次压缩它,然后将其发送给某人。他们还能恢复编辑和删除的文件吗?

Kam*_*ski 28

创建新存档文件时

我有这个压缩文件夹。在将其发送给某人之前,我解压缩了该文件夹,然后使用我的计算机编辑并删除了其中的一些文件。然后修改后,我再次压缩它然后将其发送给某人。他们还能恢复编辑和删除的文件吗?

如果您重新创建存档,如示例中所示,则新存档将不包含已删除的文件;它也不会包含现有文件的旧版本。


修改存档文件时

您创建新存档文件的示例与标题有些不同:

如果我从 zip 文件中删除了某些内容,它还能恢复吗?

如果您直接从 zip 文件中删除某些内容,它可能会也可能无法恢复。

ZIP 作为一种格式允许仅通过更新存档末尾的中央目录来删除条目,而无需重建存档的其余部分。同样,可以在不触及旧数据的情况下附加某个现有文件的新版本。

来自维基百科(强调我的):

由于可能会附加 ZIP 文件,因此只有在文件末尾的中央目录中指定的文件才是有效的。扫描 ZIP 文件以查找本地文件头是无效的(除非存档损坏),因为中央目录可能会声明某些文件已被删除,而其他文件已被更新。

例如,我们可以从包含文件 A、B 和 C 的 ZIP 文件开始。然后删除文件 B 并更新 C。这可以通过在原始 ZIP 文件的末尾附加一个新文件 C 并添加一个仅列出文件 A 和新文件 C 的新中央目录来实现。最初设计 ZIP 时,通过软盘传输文件很常见,但是写入磁盘非常耗时。如果你有一个很大的 zip 文件,可能跨越多个磁盘,并且只需要更新几个文件,而不是读取和重写所有文件,那么只读取旧的中央目录,附加新文件会快得多然后附加一个更新的中央目录。

[…]

正确读取 ZIP 档案的工具必须扫描中央目录记录签名的末尾,然后根据需要扫描其他指定的中央目录记录。他们不能从 ZIP 文件的顶部扫描条目,因为(如本节前面提到的)只有中央目录指定文件块的开始位置并且它没有被删除。扫描可能会导致误报,因为该格式不禁止块之间存在其他数据,也不禁止文件数据流包含此类签名。但是,尝试从损坏的 ZIP 存档中恢复数据的工具很可能会扫描存档以查找本地文件头签名;[…]

从 zip 文件中删除条目的工具可以:

  • 只更新中央目录;那么“删除”的数据仍在存档中并且可以恢复
  • 或更新中央目录并故意用零、垃圾或其他内容覆盖相关片段,但仍不重写存档的后续部分;那么被覆盖的数据将无法恢复
  • 或真正删除相关片段并重建(重写)随后的所有内容;那么删除的数据将无法恢复

这里“恢复”的意思是“仅从存档文件中恢复”,而不是“从文件系统/磁盘/内存/缓存/...恢复”。您似乎担心您向其发送存档文件的人是否可以恢复任何内容。如果您将存档发送给无法访问您机器的人,那么从您的文件系统/磁盘/内存/缓存/...恢复任何内容的能力(如果有)是无关紧要的,因为这是您的能力,而不是他们的能力。