破坏压缩文件的最常见方法是无意中进行ASCII模式FTP传输,这会导致多对一的CR和/或LF字符丢失。
显然,信息丢失,解决此问题的最佳方法是在FTP二进制模式下再次传输。
但是,如果原件丢失了,重要的是,数据的可恢复性如何?
[实际上,我已经知道我认为最好的答案(这很困难,但有时可能 - 我会稍后发布),以及常见的非答案(许多现成的修复CRC的程序)没有修复数据),但我认为在stackoverflow beta期间尝试这个问题会很有趣,看看是否有其他人已经走下成功恢复路径或发现了我不知道的工具。]
答案 0 :(得分:4)
已知大约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方向的损失可能稍微容易回滚。