質問

圧縮ファイルを破損する最も一般的な方法は、ASCII モードの FTP 転送を誤って実行することです。これにより、CR 文字や LF 文字の多対 1 のトラッシュが発生します。

明らかに情報の損失が発生するため、この問題を解決する最善の方法は、FTP バイナリ モードで再度転送することです。

ただし、原本が紛失し、それが重要な場合、データはどの程度回復可能でしょうか?

[実際、私はすでに最善の答えだと思うもの (非常に難しいですが、可能な場合もあります - 詳細は後で投稿します) と、よくある答え以外の答え (データを修復せずに CRC を修復するための既製のプログラムがたくさんあります) をすでに知っています。 )しかし、stackoverflow のベータ期間中にこの質問を試して、他の誰かが正常に回復するパスをたどったか、または私の知らないツールを発見したかどうかを確認するのは興味深いだろうと思いました。]

役に立ちましたか?

解決

から Bukys ソフトウェア

256バイトに約1つが破損することが知られており、腐敗は値「 012」のバイトでのみ発生することが知られています。したがって、バイトエラー率は1/256(入力の0.39%)であり、2/256バイト(入力の0.78%)が疑わしいです。しかし、スマッシュされたバイトごとに3ビットのみが影響を受けるため、ビットエラー率はわずか3/(256*8)です。0.15%が悪い、0.29%が疑わしい。

...

圧縮された入力のエラーは、後続のすべてのバイトの減圧プロセスを破壊します...減圧された出力が非常に迅速に認識されているという事実は希望の原因です - 正解の検索は間違った答えを迅速に識別できます。

最終的に、これらのファイルから合理的なデータを正常に抽出するために、いくつかの手法が組み合わされました。

  • フィールドおよび引用符で囲まれた文字列のドメイン固有の解析
  • 損傷の可能性が低い以前のデータからの機械学習
  • 他の原因によるファイルの損傷に対する許容度 (例:ロギング中にディスクがいっぱい)
  • 最も可能性の高いパスに沿って検索をガイドするための先読み

これらの手法では、必要な修理の75%が確実に特定されており、残りは最も高い公証可能性が調査されているため、もっともらしい再構成がすぐに特定されます。

他のヒント

すべての CR を CRLF に置き換える小さなスクリプトを作成して (トラッシングの方向が CRLF から CR であると仮定して)、正しい CRC が得られるまでブロックごとにランダムに CRLF を交換してみることができます。データがそれほど大きくなかったと仮定すると、宇宙の熱による死が完了するまで CPU をすべて使用することはないと思います。

明らかに情報が失われるため、これより良い方法があるかどうかはわかりません。CR から CRLF 方向の損失は、ロールバックが若干容易になる可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top