Mengapa tar tidak dapat mengekstrak file .zip? [Tutup]

28

Saya mencoba sebagian besar format (gzip, dll.) Untuk mengekstrak file zip dengan tar, dan ketika saya menjadi cukup frustrasi untuk Google untuk itu, saya tidak menemukan cara untuk mengekstrak file zip dengan tardan hanya rekomendasi untuk menggunakan zipatau unzip. Sebenarnya, sistem Linux saya bahkan tidak memiliki ziputilitas, tetapi hanya unzip(membuat saya bertanya-tanya mengapa ini adalah opsi yang disarankan utama). Tentu saja unzipberhasil, menyelesaikan masalah saya, tetapi mengapa tidak bisa tarmengekstrak file zip? Mungkin saya seharusnya bertanya, apa perbedaan antara zip dan metode kompresi yang didukung tar?

Pluto
sumber
1
Sekedar catatan, bsdtardapat mengekstrak .ziparsip: P
HalosGhost
12
Maksud Anda seperti, "mengapa saya tidak bisa menggunakan pembuka kaleng untuk memotong wortel?" Masalahnya tar memiliki format file sendiri, dan kemudian mengompresnya dengan metode apa pun yang Anda pilih. zip adalah binatang yang sama sekali berbeda. Sederhana seperti itu. Ini "cara unix", memiliki satu alat kecil yang melakukan satu pekerjaan dengan baik, daripada memiliki telur-bertelur, penabur susu wol yang akan memenuhi semua kebutuhan Anda.
tink
Saya sedikit mengedit pertanyaan saya untuk membuat ini lebih jelas, tapi saya pikir pertanyaan saya dengan jelas menyiratkan bahwa saya pikir zip adalah format kompresi dan bukan alat pengganti untuk kompresi tar +. Jawaban yang saya pilih mengoreksi apa yang saya asumsikan dan menunjukkan bahwa jawabannya tidak berdasarkan pendapat.
Pluto
Anda tidak memilikinya zipsecara default karena lisensinya tidak kompatibel dengan GPL
venimus

Jawaban:

29

Filosofi UNIX adalah memiliki alat kecil. Satu alat memang melakukan satu hal, tetapi ini sangat baik.

The taralat hanya menggabungkan beberapa file menjadi satu file tanpa kompresi.

The gzipalat hanya mengompresi file tunggal.

Jika Anda ingin memiliki keduanya, Anda cukup menggabungkan kedua alat yang menghasilkan .tar.gzfile.


The zipalat adalah hal yang sama sekali berbeda. Dibutuhkan banyak file dan menggabungkannya menjadi satu file terkompresi. Dengan algoritma yang sangat berbeda.


Jika Anda ingin satu alat untuk mengatur semuanya gunakan atool. Ini akan mendukung sejumlah format yang berbeda hanya dengan mendeteksi format dan memanggil alat yang benar.

michas
sumber
Terima kasih untuk benar-benar menjelaskan tujuan dari keduanya, bukan hanya menjelaskan apa yang dilakukan tar. Saya segera menemukan jawabannya setelah melihat artikel wikipedia yang mencantumkan format untuk "Pengarsipan," "Kompresi," dan keduanya dalam tiga tabel berbeda. Saya pikir saya akan menunggu jawaban yang menjelaskan hal ini dengan jelas.
Pluto
Untuk menjadi sedikit pemilih, gzipalgoritma kompresi sama dengan yang digunakan oleh zip. Perbedaannya adalah yang gzipdimaksudkan untuk mengompresi setiap aliran byte, termasuk .tarfile, sementara zip, diturunkan dan terinspirasi oleh PKZIP, kompres dan arsip dalam satu langkah (dan dalam urutan itu).
Joe Sewell
9

Singkat cerita: alat GNU tar tidak menyalurkan melalui zip / unzip karena tidak ada yang peduli.

Cerita panjang, ukuran asli:

tarawalnya tidak dimaksudkan untuk mengompresi dan mengompresi file, tetapi untuk pengarsipan beberapa file dalam satu file besar. Karena orang tidak hanya ingin mengarsipkan file mereka, tetapi juga, kompres mereka, sehingga mereka hanya menyalurkan taroutput melalui kompresor yang menerima input aliran data dan menjatuhkan hasilnya ke file. Keuntungan!

Sekarang, untuk membuat tugas seperti itu tidak sesakit mungkin, tarmemutuskan untuk menyalurkan secara internal file yang dihasilkan ke alat kompresi, seperti gzip, lzma, dll., Yang diaktifkan oleh flag khusus untuk setiap format saat menjalankan tar. Itu sebabnya ketika Anda mencoba untuk mengekstrak file yang rusak melalui tarAnda ditampilkan kesalahan alat yang mendasarinya, bukan dari tar:

$ tar zxf damaged.tar.gz
gzip: damaged.tar.gz: unexpected end of file

Jadi, bukan itu yang tartidak mengompres file zip, hanya tarsaja tidak memiliki kemampuan untuk memipipnya melalui alat yang benar, karena tidak ada yang benar-benar repot untuk mengimplementasikannya, dan zip sudah menyelesaikan fungsi arsip file dari file tar Format ada alasan kurang untuk tar untuk mendukungnya.

Sekarang, ada alat all-in-one yang kompres / uncompress semua yang Anda lemparkan ke mereka, sekali lagi, Anda harus memiliki alat yang benar untuk benar-benar mendukungnya. Jika Anda tidak memilikinya, alat itu akan gagal.

Braiam
sumber
1
Nah, selain tidak ada yang mengimplementasikan alat yang tepat untuk pipa, tidak ada satu: file tar hanya menggabungkan beberapa file menjadi satu. Kompresi terpisah. Jadi filter pipa tar melalui hanya kompres / dekompresi file tar tunggal. Zip bekerja secara berbeda; menggunakan satu alat terintegrasi untuk mengompresi dan menggabungkan (program Unix serupa adalah afio).
derobert
Saya sarankan menyebutkan beberapa alat kompresi all-in one yang ada. Misalnya, ada GNOME file-roller...
derobert
Rol file @derobert hanya mendukung zip jika Anda telah menginstal unzip / zip / p7zip. Kalau tidak, sama tidak berguna seperti tar.
Braiam
tar hanya mendukung berbagai versi yang dikompres jika Anda memiliki alat yang relevan diinstal juga ... Manajer arsip multi-format berguna karena mereka memberi Anda antarmuka yang konsisten untuk menangani berbagai format arsip.
derobert
@derobert tepatnya.
Braiam
3

Sebuah tarfile adalah format file sendiri dirancang untuk arsip tape. Format ini kemudian dapat dikompres menggunakan (misalnya) gzipatau bzip2format kompresi. Saat Anda mengekstrak file tar terkompresi, Anda secara efektif membuka kompresnya, lalu mengekstrak file asli dari file yang tidak dikompresi tar.

Ketika Anda mengekstrak zipfile tidak ada tarfile di dalamnya, hanya semua file asli Anda. Karenanya tidak ada alasan untuk tarterlibat dalam proses sama sekali.

Anda juga dapat mengompres file menggunakan gzipatau bzip2sendiri seperti halnya Anda dapat membuat zipfile (tanpa tarterlibat). Ketika Anda mengompres file-file ini, Anda menggunakan gunzipatau bunzip2tidak tar.

garethTheRed
sumber
1

Sebagai jawaban "Beberapa hal adil dan kita harus menerimanya" juga tidak cocok dengan saya, saya hanya melakukan beberapa penggalian (selalu baik untuk mempelajari sesuatu yang baru, bukan?).

Jadi sepertinya masalahnya adalah ke mana alat itu pergi dan apa tujuan mereka.

Alih-alih memparafrasekan apa yang saya temukan dan membuat air menjadi keruh tanpa perlu (kebingungan membuat saya kesal), lihat artikel ini: http://www.differencebetween.net/technology/difference-between-zip-and-gzip/

Saya kira tar bisa dibangun di dukungan zip, tetapi metodologi tampaknya berbeda secara fundamental. Atau mungkin mereka berpikir mengapa seseorang menggunakan alat pengarsipan ini untuk mengelola file dari alat pengarsipan dan kompresi lain (atau mungkin ada beberapa argumen antara dua coders asli dan ada perintah penahanan yang melarang zip untuk melintasi batas aplikasi .. ya saya bercanda).

Yuppers
sumber