Sesi Tanya & Jawab Hari ini hadir untuk memberi kami SuperUser - subdivisi Stack Exchange, pengelompokan situs web Q & A berbasis komunitas.
Pertanyaan
Pembaca SuperUser, MarcusJ ingin tahu tentang format tar dan mengapa kami masih menggunakannya setelah bertahun-tahun:
I know that tar was made for tape archives back in the day, but today we have archive file formats that both aggregate files and perform compression within the same logical file format.
Questions:
- Is there a performance penalty during the aggregation/compression/decompression stages for using tar encapsulated in gzip or bzip2, when compared to using a file format that does aggregation and compression in the same data structure? Assume the runtime of the compressor being compared is identical (e.g. gzip and Deflate are similar).
- Are there features of the tar file format that other file formats, such as.7z and.zip do not have?
- Since tar is such an old file format, and newer file formats exist today, why is tar (whether encapsulated in gzip, bzip2 or even the new xz) still so widely used today on GNU/Linux, Android, BSD, and other such UNIX operating systems, for file transfers, program source and binary downloads, and sometimes even as a package manager format?
Itu pertanyaan yang masuk akal; telah banyak berubah di dunia komputasi dalam tiga puluh tahun terakhir, tetapi kami masih menggunakan format tar. Apa ceritanya?
Jawabannya
Kontributor SuperUser Allquixotic menawarkan beberapa wawasan tentang umur panjang dan fungsionalitas format tar:
Part 1: Performance
Here is a comparison of two separate workflows and what they do.
You have a file on disk
blah.tar.gz
yaitu, katakanlah, 1 GB data terkompresi gzip yang, saat tidak dikompresi, menempati 2 GB (jadi rasio kompresi 50%).
Cara Anda membuat ini, jika Anda melakukan pengarsipan dan kompresi secara terpisah, adalah:
tar cf blah.tar files …
Ini akan menghasilkan
blah.tar
yang merupakan agregasi belaka
files …
dalam bentuk tidak terkompresi.
Maka Anda akan melakukannya
gzip blah.tar
Ini akan membaca isi dari
blah.tar
dari disk, kompres melalui algoritma kompresi gzip, tulis konten ke
blah.tar.gz
lalu batalkan tautan (hapus) file tersebut
blah.tar
Sekarang, mari dekompresi!
Way 1
Kamu punya
blah.tar.gz
dengan satu atau lain cara.
Anda memutuskan untuk menjalankan:
gunzip blah.tar.gz
Ini akan
-
BACA konten data terkompresi 1GB dari
blah.tar.gz
-
PROSES data terkompresi melalui
gzip
dekompresor dalam memori.
-
Saat buffer memori mengisi data “blok”, tuliskan data yang tidak dikompresi ke dalam file
blah.tar
pada disk dan ulangi sampai semua data yang dikompresi dibaca.
-
Hapus tautan (hapus) file
blah.tar.gz
Sekarang kamu punya
blah.tar
pada disk, yang tidak terkompresi tetapi berisi satu atau lebih file di dalamnya, dengan overhead struktur data yang sangat rendah. Ukuran file mungkinbeberapa byte lebih besar dari jumlah semua data file.
Kamu lari:
tar xvf blah.tar
Ini akan
-
BACA konten data 2GB yang tidak dikompresi
blah.tar
dan
tar
struktur data format file, termasuk informasi tentang izin file, nama file, direktori, dll.
- TULIS ke disk 2GB data ditambah metadata. Ini melibatkan: menerjemahkan struktur data / informasi metadata ke dalam membuat file baru dan direktori pada disk yang sesuai, atau menulis ulang file dan direktori yang ada dengan konten data baru.
Total data kami BACA BACA dari disk dalam proses ini adalah 1GB (untuk gunzip) + 2GB (untuk tar) = 3GB.
Total data kami TULIS ke disk dalam proses ini adalah 2GB (untuk gunzip) + 2GB (untuk tar) + beberapa byte untuk metadata = sekitar 4GB.
Way 2
Kamu punya
blah.tar.gz
dengan satu atau lain cara.
Anda memutuskan untuk menjalankan:
tar xvzf blah.tar.gz
Ini akan
-
BACA konten data terkompresi 1GB dari
blah.tar.gz
blok pada suatu waktu, ke dalam memori.
-
PROSES data terkompresi melalui
gzip
dekompresor dalam memori.
-
Ketika buffer memori terisi, itu akan pipa data itu, di memori, hingga ke
tar
parser format file, yang akan membaca informasi tentang metadata, dll. dan data file yang tidak terkompresi.
-
Sebagai buffer memori mengisi di
tar
parser file, itu akan MENULIS data tidak terkompresi ke disk, dengan membuat file dan direktori dan mengisinya dengan konten yang tidak terkompresi.
Total data kami BACA BACA dari disk dalam proses ini adalah 1GB data terkompresi, titik.
Total data kami TULIS ke disk dalam proses ini adalah 2GB data tidak terkompresi + beberapa byte untuk metadata = sekitar 2GB.
Jika Anda perhatikan, jumlah disk I / O masuk Way 2 aku sidentik ke disk I / O dilakukan oleh, katakanlah,
Zip
atau
7-Zip
program, menyesuaikan untuk setiap perbedaan dalam rasio kompresi.
Dan jika rasio kompresi adalah kekhawatiran Anda, gunakan
Xz
kompresor untuk membungkus
tar
dan Anda memiliki arsip TAR LZMA2, yang seefisien algoritma paling canggih yang tersedia
7-Zip
:-)
Bagian 2: Fitur
tar
menyimpan izin UNIX dalam file metadata, dan sangat terkenal dan diuji untuk berhasil mengemas direktori dengan semua jenis izin yang berbeda, tautan simbolis, dll. Ada lebih dari beberapa contoh di mana seseorang mungkin perlu untuk menggandeng sekumpulan file ke dalam satu file atau aliran, tetapi tidak harus memampatkannya (meskipun kompresi berguna dan sering digunakan).
Bagian 3: Kompatibilitas
Banyak alat didistribusikan dalam bentuk sumber atau biner sebagai.tar.gz atau.tar.bz2 karena ini adalah format file "denominator terendah": seperti kebanyakan pengguna Windows memiliki akses ke.zip atau dekompresi.rar, sebagian besar instalasi Linux, bahkan yang paling dasar, akan memiliki akses ke setidaknya tar dan gunzip, tidak peduli berapa lama atau dikupas ke bawah. Bahkan firmware Android memiliki akses ke alat-alat ini.
Proyek baru yang menargetkan pemirsa yang menjalankan distribusi modern dapat didistribusikan dengan sangat baik dalam format yang lebih modern, seperti.tar.xz (menggunakan format kompresi Xz (LZMA), yang memampatkan lebih baik daripada gzip atau bzip2), atau.7z, yang mirip dengan format file Zip atau Rar karena keduanya memadatkan dan menentukan tata letak untuk mengenkapsulasi beberapa file ke dalam satu file.
Anda tidak melihat.7z lebih sering digunakan karena alasan yang sama bahwa musik tidak dijual dari toko unduhan daring dalam format baru seperti Opus, atau video di WebM. Kompatibilitas dengan orang-orang yang menjalankan sistem kuno atau sangat dasar.
Memiliki sesuatu untuk ditambahkan ke penjelasan? Bicaralah di komentar.Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang paham teknologi lainnya? Lihat diskusi lengkap di sini.