web-dev-qa-db-ja.com

フロッピーディスクにまたがる古いZipファイルの復元:pkzipfixの同等物?

私は何か奇妙なことを試みようとしています、そして私が間違った道を進むのに時間を無駄にする前に、私はここの誰かが以前にこれをしたかどうか見るだろうと思いました。いくつかの古いフロッピーディスクにまたがるpkzipを使用してDOS(1997年?)で作成されたZipファイルがあります。予想どおり、これらのディスクの一部は最適な状態ではなく、一部のディスクからコンテンツをコピーしようとすると読み取りエラーが発生します。このZipファイルのコンテンツの一部を復元するために使用できる同等のpkzipfixはありますか?

これが私が最初に試みることですが、これが実りあるものになるかどうかはわかりません。

  1. フロッピーディスクドライブをLinuxボックスに接続します。
  2. 次のように、ハードドライブにフロッピーのディスクイメージを作成します。cat /dev/fd0 > floppyxx.img
  3. 誰かがPKZIPをLinuxに移植したかどうかを確認し、これらのディスクイメージを使用できるかどうかを確認してください。そうでない場合は、Windowsポートを探します(そしておそらくフロッピードライブをそのWindowsボックスに接続します)。

ここで誰かが以前にこのタイプの冒険に乗り出し、このような古代のアーカイブを正常に復元したことがありますか?

5
Jacob

私は部分的に成功し、アーカイブからいくつかのファイルを取得することができました。最初に、これらのフロッピーイメージをマウントするための「fd」ディレクトリを作成し、次にフロッピーイメージごとに次のことを行いました。

Sudo mount -o loop floppyxx.img fd
cat fd/myzip.Zip >> combined.Zip
Sudo umount fd

結合されたアーカイブを取得したら、次のようにしました。

unzip -FF combined.Zip

抽出できたファイルが思ったより少ないです。マルチディスクのZipアーカイブを修復するためのより効果的な方法があるかどうかを確認するためにまだ開いています。

2
Jacob

PKZipFixは非常に過大評価されています。それはあまりしません。私の記憶が正しければ、Zipファイルのヘッダーを修復するだけなので、最初のバイトにデータが破損している場合は、データストリームを見つけて、有効なZipファイルを再度作成することができます。しかし、圧縮されたデータストリームの途中でデータエラーが発生した場合は、運が悪いことになります。私はそれを少し間違っているかもしれません:私がはっきりと覚えているのは、それが実際に何をするのかを学んだとき、それがこれまでにどれほど良いことをする可能性がないかにかなり失望したということです。

マウントが間違ったファイルシステムを使用することを期待し、mount -tvfatまたはmount_msdosなどを使用する必要があります。たぶんあなたのオペレーティングシステムはそれを検出するのに十分賢いです。

そうは言っても、解凍ツールはファイルの先頭にある余分なデータを無視することがよくあります。これは、さまざまな自己解凍ファイルを処理できるようにするためです。したがって、ある程度の柔軟性が機能する可能性があります。

Zipファイルのスパンにはさまざまな形式があります。公式の標準では、しばらくの間、スパンはサポートされていなかったため、さまざまな実装者がさまざまな方法で標準を拡張しました。

Zipファイルには十分注意してください。抽出結果を注意深く監視してください。最近の取り組みでは、互換性を高めるために少しマージしようとしたと思いますが、別のソフトウェアを使用している場合は、Zipファイルのスパンが必ずしもすべての実装に常に互換性があるとは限らないことを知っておいてください。

0
TOOGAM