Mengapa tar dan gzip hampir selalu digunakan bersama, dan bukan hanya gzip? Apakah ada manfaat dari metode itu?
TAR membuat satu file yang diarsipkan dari banyak file, tetapi tidak memampatkannya.
File tar adalah gabungan dari satu atau lebih file. Setiap file didahului oleh catatan header 512-byte. Data file ditulis tidak berubah kecuali bahwa panjangnya dibulatkan ke kelipatan 512 byte dan ruang ekstra diisi nol. Akhir dari arsip ditandai oleh setidaknya dua catatan tanpa diisi berurutan.
GZIP memampatkan satu file ke file tunggal lainnya, tetapi tidak membuat arsip.
... Meskipun format file-nya juga memungkinkan penggabungan beberapa aliran seperti itu (file zip hanya didekompresiasikan menjadi dua file), gzip biasanya digunakan untuk mengkompres hanya satu file. [4] Arsip terkompresi biasanya dibuat dengan mengumpulkan koleksi file ke dalam arsip tar tunggal, dan kemudian mengompresi arsip itu dengan gzip.
tar -xzvf tarball.tar.gz single/file.txt
. Di belakang layar itu perlu melakukan beberapa pekerjaan ekstra tetapi untuk penampilan itu mengekstrak satu file..tar.*
arsip terkompresi selalu "solid", yaitu. terdiri dari satu aliran terkompresi. Sebuah.zip
arsip di sisi lain tidak padat sekali, algoritma kompresi dimulai lagi untuk setiap file. Ini mengorbankan efisiensi kompresi untuk mempercepat akses acak..7z
arsip dapat berupa solid, non-solid atau memiliki blok padat.Gzip / Bzip2 adalah kompresor aliran. Mereka memampatkan aliran data menjadi sesuatu yang lebih kecil. Mereka dapat digunakan pada file individual, tetapi tidak pada kelompok file sendiri.
Tar di sisi lain memiliki kemampuan untuk mengubah daftar file, dengan jalur, izin, dan informasi kepemilikan, menjadi satu aliran kontinu - dan sebaliknya.
Itu sebabnya, untuk mengarsipkan file (dan jika seseorang perlu kompresi juga), biasanya menggunakan tar + beberapa metode kompresi.
sumber
Tar bertugas melakukan satu dan hanya satu hal dengan baik: (tidak) pengarsipan ke dalam (dari) file arsip tunggal. Dari apa? Satu dan hanya satu hal: satu set file.
Gzip bertugas melakukan satu dan hanya satu hal dengan baik: (tidak) mengompres. Dari apa? Satu hal dan satu hal saja: satu file jenis apa pun ... dan itu termasuk file yang dibuat dengan tar.
Ini kembali ke filosofi UNIX tentang perpipaan, arsitektur "pipa dan filter" yang mendasarinya; perawatan segala sesuatu sebagai file dan tujuan arsitektur suara dari "satu-hal-tidak-satu-hal-saja-dan-tidak-itu-baik" (yang menghasilkan plug-n-play yang sangat elegan dan sederhana macam .)
Dalam kesederhanaannya, ini hampir bersifat aljabar (tujuan yang lumayan dalam desain sistem). Dan itu bukan prestasi yang mudah.
Dalam banyak hal (dan bukan tanpa kekurangannya), ini hampir merupakan puncak dalam kompabilitas, modularitas, kopling longgar, dan kohesi tinggi. Jika Anda memahami keempat ini (dan maksud saya benar - benar mengerti ), Anda mengerti, akan jelas mengapa tar dan gzip bekerja seperti itu berpasangan.
sumber
Pertama-tama, TAR tidak dibuat untuk membuat arsip file . Itu Tape ARchiver . Tugasnya adalah menulis atau memuat arsip ke / dari kaset.
The -f pilihan membuatnya menggunakan file sebagai "virtual tape", yang kemudian dapat dikompres oleh program lain. Bahkan, kompresi seperti itu juga terjadi pada tapedrives dunia nyata.
Tentu saja, filosofi menggunakan satu program untuk melakukannya dengan baik juga diperhitungkan dalam kasus ini, tetapi orang mungkin kehilangan alasan mengapa arsip TAR disusun sebagai aliran alih-alih direktori isi + konten.
sumber
Secara tradisional, sistem Unix digunakan satu program untuk melakukan satu tugas per filosofi Unix :
tar
hanya sarana untuk paket beberapa file ke dalam satu file, awalnya untuk tape backup (makatar
, t ape ar lokio).tar
tidak memberikan kompresi; arsip terkompresi yang dihasilkan biasanya dikompresi dengan beberapa program lain sepertigzip
,bzip2
, atauxz
. Di masa lalu, mereka akan menggunakancompress
perintah untuk melakukan ini; algoritma kompresi yang lebih baru jauh lebih efektif daripada ini.Pendekatan yang sangat termodulasi yang ditentukan oleh filosofi Unix berarti bahwa setiap program dapat digunakan secara individual sebagaimana mestinya, atau digabungkan untuk melakukan tugas yang lebih kompleks, termasuk pembuatan arsip terkompresi seperti dijelaskan di sini. Untuk tugas-tugas semacam ini, juga memudahkan untuk menukar alat individual sesuai kebutuhan; Anda hanya perlu mengubah program kompresi untuk menggunakan algoritma kompresi yang berbeda, tanpa harus mengganti
tar
utilitas itu sendiri.Pendekatan modular ini bukannya tanpa kelemahan. Seperti disebutkan dalam komentar untuk jawaban lain, format arsip terkompresi khusus seperti
.zip
lebih mampu menangani ekstraksi file individu; tarball terkompresi perlu didekompresi hampir secara keseluruhan untuk mengekstraksi file di dekat akhir arsip, sementara.zip
arsip memungkinkan akses acak ke isinya. (Beberapa format yang lebih baru, seperti.7z
, mendukung arsip padat dan non-padat, serta blok padat dengan ukuran bervariasi dalam arsip yang lebih besar.) Penggunaan berkelanjutantar
bersama dengan utilitas kompresi terpisah adalah masalah tradisi dan kompatibilitas; juga,.7z
dan.zip
tidak mendukung metadata sistem file Unix seperti izin.sumber