Wyodrębnienie pliku tar.gz zwraca: „To nie wygląda na archiwum tar”.

29

Mam plik tar.gz i chcę go wyodrębnić za pomocą terminala. Użyłem następujących poleceń: tar tvzf ldtp_3.5.0.orig.tar.gzi tar -xvzf ldtp_3.5.0.orig.tar.gz. Otrzymuję jednak taki sam wynik dla obu plików:

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

Wyjście polecenia file pokazuje jego plik gzip:

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

Mogę to wyodrębnić, klikając prawym przyciskiem myszy -> Wyodrębnij, ale chcę to zrobić za pomocą terminala. Czy ktoś może mi powiedzieć, jak to zrobić?

TheRookierLearner
źródło

Odpowiedzi:

38

Patrząc na widziany błąd w połączeniu z faktem, że rzeczywiście można zdekompresować, mówi, że plik jest prawdziwym archiwum TAR / Gzip, ale być może nie jest tworzony natychmiastowy TAR po Gzip.

Oznacza to, że jeśli pobrałeś to z serwera WWW, czasami kompresja Gzip jest stosowana do treści WWW na poziomie serwera, aby przyspieszyć pobieranie zawartości. Ale jeśli serwer nie skonfiguruje poprawnie ignorowania już skompresowanej zawartości, taki jak ten, może przypadkowo podwoić pliki Gzip.

Mając to na uwadze, zobaczyłbym, czy po prostu rozpakuj go z linii poleceń, aby zobaczyć, co się stanie. Użyj następującego polecenia:

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

I zobacz, jaki jest wynikowy plik. Mam zabawne przeczucie, że po uruchomieniu tego polecenia nie zobaczysz ldtp_3.5.0.orig.tarw katalogu, tylko plik o nazwie takiej jak źródło ldtp_3.5.0.orig.tar.gz- - ale może z modyfikacją zmienioną? Jeśli tak jest, to jest naprawdę podwójnie zgzipowany. Więc w tym momencie - po tym początkowym rozpakowaniu Gzipa - możesz uruchomić następującą tarkomendę:

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

I powinien teraz poprawnie rozpakować pełne archiwum TAR.

Innym sposobem na zrobienie czegoś podobnego do tego procesu dwuetapowego jest do rury wyjście gzipna tartak:

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

Klawisz cw, gzipjak i -na końcu polecenia jest kluczem:

  • cOpcja gzippowie gzipdo dekompresji do standardowego strumienia wyjściowego.
  • -Na koniec tarśrodki sterowania „stosowanie standardowego wejścia”. Tak więc w połączeniu z tym -c, w gziprura pobierze standardowe wyjście strumienia wyprowadzony z niego gzipi łączy ten do standardowego wejścia w tar.
JakeGould
źródło
1
Próbowałem pierwszego polecenia gzip -d ldtp_3.5.0.orig.tar.gzi (dziwnie) dostałem .tarplik. Jednak gdy próbowałem tar -xvf ldtp_3.5.0.orig.tar, pojawiła się informacja o błędzie: tar: v: Cannot open: No such file or directory tar: Error is not recoverable: exiting now
TheRookierLearner
@TheRookierLearner Co się stanie, jeśli będziesz robić gzip -d ldtp_3.5.0.orig.tarna ldtp_3.5.0.orig.tar?
JakeGould,
Próbowałem gzip -d ldtp_3.5.0.orig.tar.gzi dostałem wiadomość 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 . Potem spróbowałem tar -xvzf ldtp_3.5.0.orig.tari zadziałało! Wielkie dzięki!
TheRookierLearner