Витягнення файлу tar.gz повертається: "Це не схоже на архів смоли".


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

Я можу отримати його за допомогою правої кнопки миші -> Витягнути, але я хочу це зробити за допомогою терміналу. Хтось може сказати мені, як це зробити?

Відповіді:


38

Дивлячись на помилку, яку ви бачите в поєднанні з тим, що ви дійсно можете розпакувати, це говорить про те, що файл є справжнім архівом TAR / Gzip, але, можливо, не створюється негайний TAR після 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- але, можливо, з модифікацією змінено? Якщо це так, це справді подвійний 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кошти команди «використовувати стандартний ввід.» Таким чином , в поєднанні з по -cв gzip, труба буде приймати стандартний вихідний потік надходить до нього від gzipі підключити , що до стандартного вводу в tar.

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.