恢复跨软盘的古老 zip 文件:pkzipfix 等效项?

恢复跨软盘的古老 zip 文件:pkzipfix 等效项?

我即将尝试一件奇怪的事情,在我浪费时间走错路之前,我想看看这里是否有人以前做过这件事。我有一个在 DOS 中用 pkzip 创建的 zip 文件(1997 年?),它跨越了几个旧软盘。正如预期的那样,其中一些磁盘状况不佳,当我尝试从某些磁盘复制内容时,我收到读取错误。是否有 pkzipfix 等效程序可用于恢复此 zip 文件的部分内容?

这是我首先要尝试的,但我不知道这是否会有成果:

  1. 将软盘驱动器连接到我的 Linux 机。
  2. 像这样创建硬盘上的软盘的磁盘映像:cat /dev/fd0 > floppyxx.img
  3. 看看是否有人将 PKZIP 移植到 Linux,看看我是否可以使用这些磁盘映像。如果没有,请寻找 Windows 端口(也许将软盘驱动器连接到该 Windows 框)。

这里有没有人曾经进行过这种冒险,并成功恢复过这样的古代档案?

答案1

我取得了一些部分成功,并能够从存档中获取一些文件。首先,我创建了一个“fd”目录来挂载这些软盘映像,然后对于每个软盘映像,我执行以下操作:

sudo mount -o loop floppyxx.img fd
cat fd/myzip.zip >> combined.zip
sudo umount fd

有了合并的档案后,我做了以下事情:

unzip -FF combined.zip

我能够提取的文件比我希望的要少。我仍然想看看是否有更有效的方法来修复多磁盘 zip 存档。

答案2

PKZipFix 被高估了。它的作用不大。如果我没记错的话,它只是修复 Zip 文件头,所以如果第一个字节的数据损坏,那么它可以尝试查找数据流并再次生成有效的 Zip 文件。但如果压缩数据流中间出现数据错误,那么你就倒霉了。我可能有点搞错了:我记得很清楚,当我了解到它到底能做什么时,我对它能做的好事之少感到相当失望。

我预计 mount 会使用错误的文件系统,需要使用 mount -t vfat 或 mount_msdos 或类似的命令。也许您的操作系统足够智能,可以检测到这一点。

话虽如此,解压程序通常会忽略文件开头的额外数据,这样做是为了能够处理各种自解压文件。所以,也许一些灵活性会起作用。

zip 文件可以采用不同的格式进行跨度处理。官方标准在一段时间内不支持跨度处理,因此不同的实施者以不同的方式扩展了该标准。

对 zip 文件要非常谨慎:仔细观察提取结果。我认为最近的一些努力已经尝试合并一些东西,以便有更好的兼容性,但如果您可能使用不同的软件,那么要知道 Zip 文件跨度不一定是所有实现都始终兼容的。

相关内容