Извлечение файла tar.gz возвращает сообщение: «Это не похоже на tar-архив».

Вопрос или проблема

У меня есть файл tar.gz, и я хочу извлечь его с помощью терминала. Я использовал следующие команды: tar tvzf ldtp_3.5.0.orig.tar.gz и tar -xvzf ldtp_3.5.0.orig.tar.gz. Однако я получаю один и тот же результат для обоих файлов:

tar: Это не похоже на архив tar
tar: Пропускаю к следующему заголовку
tar: Выход с кодом ошибки из-за предыдущих ошибок

Вывод команды file показывает, что это gzip файл:

$ file ldtp_3.5.0.orig.tar.gz 
ldtp_3.5.0.orig.tar.gz: gzip сжатые данные, из Unix

Я могу извлечь его с помощью щелчка правой кнопкой мыши –> Извлечь, но я хочу сделать это с помощью терминала. Может кто-нибудь сказать, как это сделать?

Смотря на ошибку, которую вы видите, вместе с фактом, что вы действительно можете его распаковать, можно сказать, что файл является подлинным архивом TAR/Gzip, но, возможно, прямого TAR не создается сразу после Gzip.

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

С этим в виду, я бы попробовал просто распаковать Gzip из командной строки, чтобы посмотреть, что произойдет. Используйте команду, похожую на эту:

gzip -d ldtp_3.5.0.orig.tar.gz

И посмотрите, что за файл получится в результате. У меня есть ощущение, что после выполнения этой команды вы не увидите ldtp_3.5.0.orig.tar в директории, а скорее файл с именем, как у источника — ldtp_3.5.0.orig.tar.gz — но, возможно, с изменением? Если это так, это действительно двойное Gzip-сжатие. Итак, на этом этапе — после начального распаковки Gzip — вы можете выполнить команду tar вот так:

tar -xvzf ldtp_3.5.0.orig.tar.gz

И она теперь должна правильно распаковать полный TAR архив.

Другой способ сделать что-то подобное этому двустепенному процессу — это передать вывод gzip в tar вот так:

gzip -dc ldtp_3.5.0.orig.tar.gz | tar -xvzf -

c в gzip, а также - в конце команды является ключевым моментом:

  • Опция c для gzip сообщит gzip, чтобы распаковать в стандартный поток вывода.
  • - в конце команды tar означает «использовать стандартный ввод». Таким образом, в сочетании с -c в gzip, пайп затем возьмет стандартный поток вывода, переданный ему от gzip, и подключит его к стандартному вводу в tar.

Ответ или решение

Когда вы пытаетесь извлечь файл tar.gz, но получаете ошибку "This does not look like a tar archive", это может быть неприятной ситуацией. Однако, рассмотрим проблему подробнее, чтобы найти эффективное решение.

Проблема

Вы использовали команды:

tar tvzf ldtp_3.5.0.orig.tar.gz

и

tar -xvzf ldtp_3.5.0.orig.tar.gz

оба из которых возвращают сообщение:

tar: This does not look like a tar archive
tar: Skipping to next header
tar: Exiting with failure status due to previous errors

При этом команда file указывает, что файл действительно является архивом сжатия gzip:

$ file ldtp_3.5.0.orig.tar.gz 
ldtp_3.5.0.orig.tar.gz: gzip compressed data, from Unix

Причины проблемы

Сообщение об ошибке может указывать на несколько возможных причин:

  1. Проблема с двойным сжатием: Если файл был скачан с веб-сервера, существует вероятность, что он был сжат дважды. Это может происходить, если сервер неправильно настроен и не исключает уже сжатые файлы из дополнительного сжатия.

  2. Проблема с загрузкой: Если файл был поврежден во время загрузки, это также может привести к подобной ошибке.

Решения

Чтобы разрешить эту ситуацию, выполните следующие шаги:

  1. Удалите сжатие Gzip. Попробуйте разархивировать файл, используя команду gzip:

    gzip -d ldtp_3.5.0.orig.tar.gz

    Если файл был действительно двойным сжатием, то после выполнения этой команды файл будет переименован. Проверьте содержимое вашего каталога. Если вы не видите ldtp_3.5.0.orig.tar, возможно, файл по-прежнему сжат, и вам нужно повторить процесс.

  2. Используйте конвейер. Альтернатива вышеописанному – это использование конвейера, который объединяет команды gzip и tar:

    gzip -dc ldtp_3.5.0.orig.tar.gz | tar -xv

    В этом случае:

    • -d указывает gzip на декомпрессию.
    • -c говорит gzip, чтобы выход был отправлен в стандартный поток вывода.
    • - в конце команды tar указывает на то, что вы используете стандартный ввод.

Заключение

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

Следуя этим рекомендациям, вы сможете эффективно извлечь содержимое своего файла tar.gz через терминал.

Оцените материал
Добавить комментарий

Капча загружается...