我打算将大量数据打包到档案中,以便我可以使用在线文件存储服务和各种本地备份来存储它们 - 目的是使其成为相当长期的静态存储。
我目前计划使用 7zip 将它们压缩成.7z文件,但我宁愿将文件夹树压缩成大块,这样每个存档将包含~350Mb-1Gb 的数据(前我使用了一种称为“压缩”的格式,我想知道这种格式对于损坏的抵抗力有多强。
档案库的结构是否能够修复“轻微”损坏?
或者,如果损坏“严重”,是否会破坏全部的档案——或者仅仅是档案内损坏的特定站点中的那些文件?
本质上,这里隐藏的问题是:我应该将其打包成许多小型的独立档案还是几个大型档案?
答案1
任何压缩工具在处理非常大的文件时都会出现损坏问题。最好的办法可能是使用较小的文件,但不是更大档案馆的各个卷 - 作为单独的档案馆。
据我所知,如果档案的某个部分文件损坏,7zip 将丢失整个档案。
答案2
即使只有轻微损坏,7-zip 也会丢失整个存档。这是因为 7-zip 仅使用固体压缩,这意味着所有文件都聚集在一起。不过,7-zip 作者提供了有关如何在此处尝试手动修复您的 7zip 存档。
如果您希望能够从损坏的存档中恢复未损坏的文件,则必须制作非固结存档,例如使用 DEFLATE 的 zip。我尝试了几种格式,包括允许非固结存档的 ARC,但它的弹性不如 zip。还有 PEA 格式(由 PEAzip 提供),允许部分提取,以及 RAR(由 WinRAR 提供),它专门有一个选项“保留损坏的文件”以允许部分提取。
您可以自己尝试各种压缩格式,看看是否仍然可以使用以下方法解压缩数据一个简单的数据篡改 Python 工具。
答案3
如果您希望压缩时有冗余,我建议您使用 rar/par/par2 文件。这已成为通过新闻组和许多其他来源发送的文件的压缩冗余标准。您可以将文件拆分为多个 rar 文件……甚至在丢失整个 rar 文件的情况下仍可恢复数据。对于压缩效果不佳的数据,这实际上可能会增加总大小,但这是您为冗余付出的代价。
答案4
根据您的需要,最好在另一个层面上引入冗余。我想说的是,您宁愿考虑另一份完整的文件副本,而不是试图减轻部分损坏。然后,您定期检查这些文件的校验和,每当出现问题时,您就更换有缺陷的硬件并再次从完整的备份中复制。