恢复损坏的zip或gzip文件?

时间:2008-09-12 18:44:47

标签: zip gzip recovery corrupt

破坏压缩文件的最常见方法是无意中进行ASCII模式FTP传输,这会导致多对一的CR和/或LF字符丢失。

显然,信息丢失,解决此问题的最佳方法是在FTP二进制模式下再次传输。

但是,如果原件丢失了,重要的是,数据的可恢复性如何?

[实际上,我已经知道我认为最好的答案(这很困难,但有时可能 - 我会稍后发布),以及常见的非答案(许多现成的修复CRC的程序)没有修复数据),但我认为在stackoverflow beta期间尝试这个问题会很有趣,看看是否有其他人已经走下成功恢复路径或发现了我不知道的工具。]

2 个答案:

答案 0 :(得分:4)

来自Bukys Software

  

已知大约1个256字节   腐败,腐败   已知仅以字节为单位出现   值'\ 012'。所以字节错误率   是1/256(输入的0.39%)和2/256   字节(输入的0.78%)是可疑的。   但是因为每次只有三位被砸   字节受影响,误码率   只有3 /(256 * 8):0.15%差,0.29%   是可疑的。

     

...

     

压缩输入中的错误   破坏减压过程   所有后续字节......事实   解压缩的输出是   可原因很糟糕的原因很快   希望 - 寻找正确的   答案可以找出错误的答案   快。

     

最终,有几种技术   合并成功提取   来自这些文件的合理数据:

     
      
  • 字段和引用字符串的特定于域的解析
  •   
  • 机器从先前数据中学习,损坏概率低
  •   
  • 由于其他原因造成的文件损坏容差(例如磁盘已满   记录)
  •   
  • 指导沿最高概率路径搜索的前瞻
  •   
     

这些技术确定了75%的   必要的必要修理,和   其余的都在探索中   最高概率优先,所以   似是而非的重建   立即确定。

答案 1 :(得分:1)

您可以尝试编写一个小脚本来替换CRLF的所有CR(假设垃圾的方向是CRLF到CR),每个块随机交换它们直到你有正确的crc。假设数据不是特别大,我猜这可能不会使用你的所有CPU,直到宇宙的热量死亡完成。

由于确实存在信息丢失,我不知道有更好的方法。 CR到CRLF方向的损失可能稍微容易回滚。

相关问题