Восстановить испорченные zip или gzip файлы? - PullRequest
5 голосов
/ 12 сентября 2008

Самый распространенный способ повреждения сжатых файлов - это непреднамеренная передача FTP-файла в режиме ASCII, что приводит к перебрасыванию символов CR и / или LF много к одному.

Очевидно, что происходит потеря информации, и лучший способ решить эту проблему - это снова выполнить передачу в двоичном режиме FTP.

Однако, если оригинал утерян, и это важно, насколько восстанавливаемые данные?

[На самом деле, я уже знаю, что я думаю, что лучший ответ (это очень сложно, но иногда возможно - я опубликую позже), и общие неполадки (множество готовых программ для восстановления CRC без восстановления данных), но я подумал, что было бы интересно попробовать этот вопрос во время бета-тестирования stackoverflow и посмотреть, прошел ли кто-нибудь еще путь успешного восстановления или обнаружил инструменты, о которых я не знаю.

Ответы [ 2 ]

4 голосов
/ 13 сентября 2008

Из Bukys Software

Приблизительно 1 на 256 байтов известен быть коррумпированным, а коррупция Известно, что встречаются только в байтах с значение '\ 012'. Таким образом, частота ошибок в байтах составляет 1/256 (0,39% от ввода) и 2/256 байты (0,78% входных данных) являются подозрительными. Но так как только три бита разбиты Байт влияет, частота ошибок по битам только 3 / (256 * 8): 0,15% плохо, 0,29% есть подозрение.

...

Ошибка в сжатом входе нарушает процесс декомпрессии для все последующие байты ... Дело в том, что распакованный вывод узнаваемо плохо так быстро это причина для надежды - поиск правильного ответ может определить неправильные ответы быстро.

В конечном счете, несколько методов были объединены, чтобы успешно извлечь разумные данные из этих файлов:

  • Разбор доменных имен и строк в кавычках
  • Машинное обучение по предыдущим данным с низкой вероятностью повреждения
  • Допуск для повреждения файла по другим причинам (например, диск заполнен во время каротаж)
  • Ожидание для направления поиска по путям с наибольшей вероятностью

Эти методы определяют 75% необходимый ремонт с уверенностью, и остальные исследуются сначала с наибольшей вероятностью, так что вероятные реконструкции опознан сразу.

1 голос
/ 12 сентября 2008

Вы можете попробовать написать небольшой скрипт, который заменит все CR на CRLF (при условии, что направление перемещения было CRLF на CR), меняя их случайным образом на каждый блок, пока у вас не будет правильного crc. Предполагая, что данные не были особенно большими, я предполагаю, что они могут не использовать весь ваш ЦП до полной смерти вселенной.

Поскольку существует определенная потеря информации, я не знаю, что есть лучший способ. Потери в направлении от CR к CRLF могут быть немного легче откатить.

...