Apa Keuntungan Menggunakan Format File Tar Saat Ini?
Format pengarsipan tar, dalam tahun-tahun komputasi, benar-benar merupakan Metuselah namun masih banyak digunakan sampai sekarang. Apa yang membuat format tar sangat berguna lama setelah didirikan?
Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.
Pertanyaan
SuperUser reader MarcusJ ingin tahu tentang format tar dan mengapa kami masih menggunakannya setelah bertahun-tahun:
Saya tahu bahwa tar dibuat untuk arsip pita pada hari itu, tetapi hari ini kami memiliki format arsip file yang menggabungkan file dan melakukan kompresi dalam format file logis yang sama.
Pertanyaan:
- Apakah ada penalti kinerja selama tahap agregasi / kompresi / dekompresi untuk menggunakan tar yang dienkapsulasi dalam gzip atau bzip2, bila dibandingkan dengan menggunakan format file yang melakukan agregasi dan kompresi dalam struktur data yang sama? Asumsikan runtime kompresor yang dibandingkan adalah identik (mis. Gzip dan Deflate serupa).
- Apakah ada fitur format file tar yang format file lainnya, seperti .7z dan .zip tidak miliki?
- Karena tar adalah format file yang lama, dan format file yang lebih baru ada saat ini, mengapa tar (baik yang dienkapsulasi dalam gzip, bzip2 atau bahkan xz baru) masih begitu banyak digunakan saat ini di GNU / Linux, Android, BSD, dan UNIX sejenis lainnya sistem operasi, untuk transfer file, sumber program dan unduhan biner, dan kadang-kadang bahkan sebagai format manajer paket?
Itu pertanyaan yang masuk akal; begitu banyak yang telah berubah di dunia komputasi dalam tiga puluh tahun terakhir tetapi kami masih menggunakan format tar. Apa ceritanya?
Jawabannya
Kontributor SuperUser, Allquixotic, menawarkan wawasan tentang umur panjang dan fungsionalitas format tar:
Bagian 1: Kinerja
Berikut ini adalah perbandingan dari dua alur kerja terpisah dan apa yang mereka lakukan.
Anda memiliki file di disk
blah.tar.gz
yang, katakanlah, 1 GB data yang dikompresi gzip yang, ketika tidak terkompresi, menempati 2 GB (jadi rasio kompresi 50%).Cara Anda membuat ini, jika Anda melakukan pengarsipan dan kompresi secara terpisah, akan menjadi:
tar cf blah.tar file ...
Ini akan menghasilkan
blah.tar
yang merupakan agregasi belaka darifile ...
dalam bentuk terkompresi.Maka Anda akan melakukannya
gzip blah.tar
Ini akan membaca isi
blah.tar
dari disk, kompres mereka melalui algoritma kompresi gzip, tulis kontennyablah.tar.gz
, lalu hapus tautan (hapus) file tersebutblah.tar
.Sekarang, mari kita dekompresi!
Cara 1
Kamu punya
blah.tar.gz
, satu atau lain cara.Anda memutuskan untuk menjalankan:
gunzip blah.tar.gz
Ini akan
- BACA isi data terkompresi 1GB dari
blah.tar.gz
.- PROSES data yang dikompresi melalui
gzip
dekompresor dalam memori.- Saat buffer memori terisi dengan data "satu blok", TULIS data yang tidak terkompresi ke dalam file
blah.tar
pada disk dan ulangi sampai semua data terkompresi dibaca.- Putuskan tautan (hapus) file tersebut
blah.tar.gz
.Sekarang kamu punya
blah.tar
pada disk, yang tidak terkompresi tetapi mengandung satu atau lebih file di dalamnya, dengan overhead struktur data yang sangat rendah. Ukuran file mungkin beberapa byte lebih besar dari jumlah semua data file.Kamu lari:
tar xvf blah.tar
Ini akan
- BACA konten data terkompresi sebesar 2GB dari
blah.tar
danter
struktur data format file, termasuk informasi tentang izin file, nama file, direktori, dll.- MENULIS ke disk data 2GB plus metadata. Ini melibatkan: menerjemahkan struktur data / informasi metadata ke dalam membuat file dan direktori baru 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 MENULIS untuk disk dalam proses ini adalah 2GB (untuk gunzip) + 2GB (untuk tar) + beberapa byte untuk metadata = sekitar 4GB.
Cara 2
Kamu punya
blah.tar.gz
, satu atau lain cara.Anda memutuskan untuk menjalankan:
tar xvzf blah.tar.gz
Ini akan
- BACA isi data terkompresi 1GB dari
blah.tar.gz
, satu blok pada satu waktu, ke dalam memori.- PROSES data yang dikompresi melalui
gzip
dekompresor dalam memori.- Ketika buffer memori terisi, itu akan pipa data itu, dalam memori, hingga ke
ter
parser format file, yang akan membaca informasi tentang metadata, dll. dan data file yang tidak dikompresi.- Saat buffer memori terisi dalam
ter
parser file, itu akan MENULIS data yang 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 MENULIS ke disk dalam proses ini adalah 2GB data terkompresi + beberapa byte untuk metadata = sekitar 2GB.
Jika Anda perhatikan, jumlah disk I / O di Cara 2 aku s identik ke disk I / O dilakukan oleh, katakanlah, the
Zip
atau7-Zip
program, menyesuaikan untuk setiap perbedaan dalam rasio kompresi.Dan jika rasio kompresi menjadi perhatian Anda, gunakan
Xz
kompresor untuk merangkumter
, dan Anda memiliki arsip TAR LZMA2, yang sama efisiennya dengan algoritma paling canggih yang ada7-Zip
:-)Bagian 2: Fitur
ter
menyimpan izin UNIX dalam metadata file-nya, dan sangat terkenal dan diuji untuk berhasil mengemas direktori dengan semua jenis izin yang berbeda, tautan simbolik, dll. Ada lebih dari beberapa contoh di mana seseorang mungkin perlu menggumpalkan banyak file ke dalam satu file atau streaming, tetapi tidak perlu 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 “common common denominator”: seperti kebanyakan pengguna Windows memiliki akses ke dekompresor .zip atau .rar, kebanyakan instalasi Linux, bahkan yang paling dasar, akan memiliki akses ke setidaknya tar dan gunzip, tidak peduli berapa usia atau dikupas. Bahkan firmware Android memiliki akses ke alat-alat ini.
Proyek-proyek baru yang menargetkan pemirsa yang menjalankan distribusi modern mungkin sangat baik mendistribusikan dalam format yang lebih modern, seperti .tar.xz (menggunakan format kompresi Xz (LZMA), yang kompres lebih baik daripada gzip atau bzip2), atau .7z, yang mirip dengan format file Zip atau Rar yang dikompres dan menentukan tata letak untuk mengenkapsulasi beberapa file menjadi satu file.
Anda tidak melihat .7z digunakan lebih sering karena alasan yang sama bahwa musik tidak dijual dari toko unduhan daring dalam format baru seperti Opus, atau video di WebM. Kompatibilitas dengan orang yang menjalankan sistem kuno atau yang sangat mendasar.
Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.