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

29

У меня есть файл tar.gz, и я хочу извлечь его с помощью терминала. Я использовал следующие команды: 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

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

TheRookierLearner
источник

Ответы:

38

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

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

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

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

И посмотрите, что это за файл. У меня странное чувство после того, как вы запустите эту команду, вы не увидите ldtp_3.5.0.orig.tarв каталоге, а скорее файл, названный как источник ldtp_3.5.0.orig.tar.gz- но, возможно, с измененной модификацией? Если это так, то это действительно двойной Gzipped. Таким образом, в этот момент - после этого начального un-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команды означает «использовать стандартный ввод». Таким образом, в сочетании с входом « -cin» gzip, канал затем берет из него стандартный поток вывода gzipи соединяет его со стандартным входом «in» tar.
JakeGould
источник
1
Я попробовал первую команду, gzip -d ldtp_3.5.0.orig.tar.gzи я (как ни странно) получил .tarфайл. Однако, когда я попытался, tar -xvf ldtp_3.5.0.orig.tarя получил сообщение об ошибке: tar: v: Cannot open: No such file or directory tar: Error is not recoverable: exiting now
TheRookierLearner
@TheRookierLearner Тогда что произойдет, если вы будете делать gzip -d ldtp_3.5.0.orig.tarна ldtp_3.5.0.orig.tar?
JakeGould
Я попытался, gzip -d ldtp_3.5.0.orig.tar.gzи я получил сообщение gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored gzip: on.gz: No such file or directory gzip: the.gz: No such file or directory gzip: ldtp_3.5.0.orig.tar: unknown suffix -- ignored . После этого я попытался, tar -xvzf ldtp_3.5.0.orig.tarи это сработало! Благодаря тонну!
TheRookierLearner