Bagian 1: Kinerja
Berikut ini adalah perbandingan dua alur kerja terpisah dan apa yang mereka lakukan.
Anda memiliki file di disk blah.tar.gzyang, katakanlah, 1 GB data yang dikompresi gzip yang, ketika tidak dikompresi, 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 files ...
Ini akan menghasilkan di blah.tarmana hanya kumpulan dari files ...dalam bentuk yang tidak terkompresi.
Maka Anda akan melakukannya
gzip blah.tar
Ini akan membaca isi blah.tardari disk, kompres mereka melalui algoritma kompresi gzip, tulis kontennya blah.tar.gz, lalu batalkan tautan (hapus) file tersebut blah.tar.
Sekarang, mari kita dekompresi!
Cara 1
Anda punya blah.tar.gz, dengan satu atau lain cara.
Anda memutuskan untuk menjalankan:
gunzip blah.tar.gz
Ini akan
- BACA isi data terkompresi 1 GB dari
blah.tar.gz.
- PROSES data yang dikompresi melalui
gzipdekompresor dalam memori.
- Saat buffer memori terisi dengan data "satu blok", TULIS data yang tidak terkompresi ke dalam file
blah.tarpada disk dan ulangi sampai semua data terkompresi dibaca.
- Putuskan tautan (hapus) file tersebut
blah.tar.gz.
Sekarang, Anda memiliki blah.tarpada disk, yang tidak terkompresi tetapi berisi 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 2 GB
blah.tardan tarstruktur data format file, termasuk informasi tentang izin file, nama file, direktori, dll.
- MENULIS 2 GB data ditambah metadata ke disk. 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 yang kami BACA dari disk dalam proses ini adalah 1 GB (untuk gunzip) + 2 GB (untuk tar) = 3 GB.
Total data yang kami WROTE ke disk dalam proses ini adalah 2 GB (untuk gunzip) + 2 GB (untuk tar) + beberapa byte untuk metadata = sekitar 4 GB.
Cara 2
Anda punya blah.tar.gz, dengan satu atau lain cara.
Anda memutuskan untuk menjalankan:
tar xvzf blah.tar.gz
Ini akan
- BACA isi data terkompresi 1 GB
blah.tar.gz, satu blok pada satu waktu, ke dalam memori.
- PROSES data yang dikompresi melalui
gzipdekompresor dalam memori.
- Sebagai buffer memori penuh, itu akan pipa data, dalam memori, hingga
tarparser format file, yang akan membaca informasi tentang metadata, dll dan file data terkompresi.
- Ketika buffer memori terisi dalam
tarfile parser, itu akan MENULIS data yang tidak terkompresi ke disk, dengan membuat file dan direktori dan mengisinya dengan konten yang tidak terkompresi.
Total data yang kami BACA dari disk dalam proses ini adalah 1 GB data terkompresi, titik.
Total data yang kami MENULIS ke disk dalam proses ini adalah 2 GB data yang tidak terkompresi + beberapa byte untuk metadata = sekitar 2 GB.
Jika Anda perhatikan, jumlah disk I / O di Way 2 adalah identik dengan disk I / O yang dilakukan oleh, katakanlah, Zipatau 7-Zip program, menyesuaikan untuk setiap perbedaan rasio kompresi.
Dan jika rasio kompresi menjadi perhatian Anda, gunakan Xzkompresor untuk merangkum tar, dan Anda memiliki arsip TAR LZMA2 , yang sama efisiennya dengan algoritma paling canggih yang tersedia untuk 7-Zip :-)
Bagian 2: Fitur
tar 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 menggumpal banyak 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 itu 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 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 yang menjalankan sistem kuno atau yang sangat mendasar.
tar xvzfini lebih sulit daripada7z -x...