Format pengarsipan tar, dalam tahun-tahun komputasi, Metusalah yang sesungguhnya namun masih digunakan saat ini. Apa yang membuat format tar sangat berguna lama setelah dimulai?
Sesi Tanya & Jawab hari ini hadir untuk memberi kami hak milik SuperUser-sub divisi Stack Exchange, pengelompokan situs web Q & A berbasis komunitas.
Pembaca SuperUser, MarcusJ ingin tahu tentang format tar dan mengapa kami masih menggunakannya setelah bertahun-tahun:
Saya tahu bahwa tar dibuat untuk arsip rekaman pada hari itu, tetapi hari ini kami memiliki format file arsip 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 dibandingkan identik (misalnya gzip dan Deflate serupa).
- Apakah ada fitur format file tar yang format file lain, seperti .7z dan .zip tidak punya?
- Karena tar adalah format file 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 lainnya seperti itu 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 dalam dunia komputasi dalam tiga puluh tahun terakhir, tetapi kami masih menggunakan format tar. Apa ceritanya?
Kontributor SuperUser Allquixotic menawarkan beberapa wawasan tentang umur panjang dan fungsionalitas format tar:
Bagian 1: Kinerja
Berikut ini adalah perbandingan dua alur kerja yang terpisah dan apa yang mereka lakukan.
Anda memiliki file di 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 file…
Ini akan menghasilkan
blah.tar
yang merupakan agregasi belakafile ...
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 keblah.tar.gz
, lalu batalkan tautan (hapus) file tersebutblah.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
danter
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 kamiBACA BACA dari disk dalam proses ini adalah 1GB (untuk gunzip) + 2GB (untuk tar) = 3GB.
Total data kamiTULIS 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 akanpipa data itu, di memori, hingga ke
ter
parser format file, yang akan membaca informasi tentang metadata, dll. dan data file yang tidak terkompresi.- Sebagai buffer memori mengisi di
ter
parser file, itu akan MENULIS data tidak terkompresi ke disk, dengan membuat file dan direktori dan mengisinya dengan konten yang tidak terkompresi.Total data kamiBACA BACA dari disk dalam proses ini adalah 1GB data terkompresi, titik.
Total data kamiTULIS ke disk dalam proses ini adalah 2GB data tidak terkompresi + beberapa byte untuk metadata = sekitar 2GB.
Jika Anda perhatikan, jumlah disk I / O masukWay 2 aku sidentik ke disk I / O dilakukan oleh, katakanlah,
Zip
atau7-Zip
program, menyesuaikan untuk setiap perbedaan dalam rasio kompresi.Dan jika rasio kompresi adalah kekhawatiran Anda, gunakan
Xz
kompresor untuk membungkuster
, dan Anda memiliki arsip TAR LZMA2, yang seefisien algoritma paling maju yang tersedia7-Zip
:-)Bagian 2: Fitur
ter
menyimpan izin UNIX di dalam metadata file-nya, dan sangat dikenal 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 menggandeng sekumpulan file ke dalam satu file atau aliran, 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 "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 online 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.