Как восстановить файлы из поврежденного архива .tar.gz?

StackOverflow https://stackoverflow.com/questions/201392

  •  03-07-2019
  •  | 
  •  

Вопрос

У меня есть большое количество файлов в архиве .tar.gz.Проверка типа файла командой

file SMS.tar.gz

дает ответ

gzip compressed data - deflate method , max compression

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

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

Есть ли способ восстановить хотя бы часть архива?

Это было полезно?

Решение

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

Тогда я бы прочитал Набор инструментов для восстановления gzip страница.

Другие советы

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

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

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

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

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

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

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

Вот один из возможных сценариев, с которым мы столкнулись.У нас был файл 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.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top