Mengekstrak file tar.gz mengembalikan, "Ini tidak terlihat seperti arsip tar."

29

Saya punya file tar.gz dan saya ingin mengekstraknya menggunakan terminal. Saya menggunakan perintah berikut: tar tvzf ldtp_3.5.0.orig.tar.gzdan tar -xvzf ldtp_3.5.0.orig.tar.gz. Namun, saya mendapatkan hasil yang sama untuk kedua file:

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

I output dari perintah file menunjukkan file gzip:

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

Saya dapat mengekstraknya menggunakan Klik kanan -> Ekstrak tetapi saya ingin melakukannya menggunakan terminal. Adakah yang bisa memberi tahu saya cara melakukannya?

TheRookierLearner
sumber

Jawaban:

37

Melihat kesalahan yang Anda lihat digabungkan dengan fakta bahwa Anda memang dapat mendekompresinya dikatakan bahwa file tersebut adalah arsip TAR / Gzip asli, tetapi mungkin bukan TAR langsung yang dibuat setelah Gzip.

Artinya, jika Anda mengunduh ini dari server web, terkadang kompresi Gzip diterapkan pada konten web di tingkat server untuk mempercepat pengunduhan konten. Tetapi jika tidak diatur dengan benar pada server untuk mengabaikan konten yang sudah dikompres seperti ini, itu dapat secara tidak sengaja menggandakan file-file Gzip.

Dengan mengingat hal itu saya akan melihat apakah cukup un-Gzip dari baris perintah untuk melihat apa yang terjadi. Gunakan perintah seperti ini:

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

Dan lihat apa file yang dihasilkan. Saya punya perasaan lucu setelah Anda menjalankan perintah itu, Anda tidak akan melihat ldtp_3.5.0.orig.tardi direktori melainkan file bernama seperti sumber ldtp_3.5.0.orig.tar.gz- - tapi mungkin dengan modifikasi yang diubah? Jika itu masalahnya, maka ini benar-benar gzip ganda. Jadi pada titik ini — setelah awal un-Gzip — Anda dapat menjalankan tarperintah yang Anda miliki seperti ini:

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

Dan sekarang seharusnya mendekompres arsip TAR lengkap dengan benar.

Cara lain untuk melakukan sesuatu yang mirip dengan proses dua langkah adalah untuk pipa output dari gzipuntuk tarseperti ini:

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

Di cdalam gzipdan -di akhir perintah adalah kuncinya:

  • The cpilihan untuk gzipakan memberitahu gzipuntuk dekompresi ke output stream standar.
  • Di -akhir tarperintah berarti “gunakan input standar.” Jadi, digabungkan dengan -cin gzip, pipa kemudian akan mengambil aliran output standar yang disalurkan dari gzipdan menghubungkannya ke input standar tar.
JakeGould
sumber
1
Saya mencoba perintah pertama gzip -d ldtp_3.5.0.orig.tar.gzdan saya (anehnya) mendapat .tarfile. Namun, ketika saya mencoba tar -xvf ldtp_3.5.0.orig.tarsaya mendapat kesalahan mengatakan: tar: v: Cannot open: No such file or directory tar: Error is not recoverable: exiting now
TheRookierLearner
@TheRookierLearner Lalu apa yang terjadi jika Anda melakukan gzip -d ldtp_3.5.0.orig.tarpada ldtp_3.5.0.orig.tar?
JakeGould
Saya mencoba gzip -d ldtp_3.5.0.orig.tar.gzdan saya mendapat pesan 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 . Setelah ini saya mencoba tar -xvzf ldtp_3.5.0.orig.tardan berhasil! Terima kasih banyak!
TheRookierLearner