2008-10-14 2 views
22

У меня есть большое количество файлов в архиве .tar.gz. Проверка типа файла с помощью командыКак восстановить файлы из поврежденного архива .tar.gz?

file SMS.tar.gz 

дает ответ

gzip compressed data - deflate method , max compression 

Когда я пытаюсь извлечь архив с разархивировать, после задержки я получаю сообщение

gunzip: SMS.tar.gz: unexpected end of file 

Есть ли любой способ восстановить даже часть архива?

ответ

15

Вы уверены, что это файл gzip? Я бы сначала запустил «файл SMS.tar.gz», чтобы проверить это.

Тогда я бы прочитал страницу The gzip Recovery Toolkit.

+2

gzrecover не установлен на Mac OS. Однако метод Людвикаса Букиса работал отлично. Если бы tcpdump был отправлен в gzip, убитый с помощью Control-C, неожиданный EOF пытается распаковать файл pipee. – George

+0

gzip Recovery Toolkit потрясающий. Благодаря! – Nemo

29

Восстановление возможно, но это зависит от того, что вызвало коррупцию.

Если файл просто усечен, получение частичного результата не слишком сложно; просто запустите

gunzip <SMS.tar.gz> SMS.tar.partial 

, который даст некоторый выход, несмотря на ошибку в конце.

Если сжатый файл имеет большие недостающие блоки, он по существу безнадежен после плохого блока.

Если сжатый файл систематически поврежден небольшими способами (например, перенос двоичного файла в режиме ASCII, который разбивает возвраты каретки и строки новой строки по всему файлу), можно восстановить, но требует довольно много пользовательского программирования, это действительно стоит того, если у вас нет абсолютно никакого другого обращения (нет резервных копий), и данные стоят больших усилий. (Я сделал это успешно.) Я упомянул этот сценарий в previous question.

Ответы на .zip-файлы несколько отличаются друг от друга, поскольку в архивах zip имеется несколько сжатых элементов, поэтому есть большая надежда (хотя большинство коммерческих инструментов довольно фиктивные, они устраняют предупреждения путем исправления CRC, а не восстановления хороших данных). Но ваш вопрос касался файла .tar.gz, который представляет собой архив с одним большим членом.

+0

После этой процедуры, скорее всего, будет нечитаемый файл. К счастью, есть инструмент для исправления этого и получения от него частичных данных: http://riaschissl.bestsolution.at/2015/03/repair-corrupt-tar-archives-the-better-way/ – JohnEye

3

Вот один из возможных сценариев, с которыми мы столкнулись. У нас был tar.gz файл, который не распаковывать, пытаясь расстегнуть дал ошибку:

gzip -d A.tar.gz 
gzip: A.tar.gz: invalid compressed data--format violated 

Я понял, что файл может изначально загружено через, не соединения двоичного FTP (мы не знаем наверняка).

Решение было относительно просто с помощью утилиты Unix dos2unix

dos2unix A.tar.gz 
dos2unix: converting file A.tar.gz to UNIX format ... 
tar -xvf A.tar 
file1.txt 
file2.txt 
....etc. 

Это сработало! Это одна тонкая возможность, и, может быть, стоит попробовать - это может помочь кому-то там.

+0

Это исправлено для меня – Shannow

Смежные вопросы