If-Koubou

Apa Keuntungan Menggunakan Format File Tar Hari Ini?

Apa Keuntungan Menggunakan Format File Tar Hari Ini? (Bagaimana caranya)


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.

Pertanyaan

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?

Jawabannya

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 diskblah.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 menghasilkanblah.tar yang merupakan agregasi belakafile ... dalam bentuk tidak terkompresi.

Maka Anda akan melakukannya

gzip blah.tar 

Ini akan membaca isi dariblah.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 punyablah.tar.gz, dengan satu atau lain cara.

Anda memutuskan untuk menjalankan:

gunzip blah.tar.gz 

Ini akan

  • BACA konten data terkompresi 1GB dariblah.tar.gz.
  • PROSES data terkompresi melaluigzip dekompresor dalam memori.
  • Saat buffer memori mengisi data “blok”, tuliskan data yang tidak dikompresi ke dalam fileblah.tar pada disk dan ulangi sampai semua data yang dikompresi dibaca.
  • Hapus tautan (hapus) fileblah.tar.gz.

Sekarang kamu punyablah.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 dikompresiblah.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 punyablah.tar.gz, dengan satu atau lain cara.

Anda memutuskan untuk menjalankan:

tar xvzf blah.tar.gz 

Ini akan

  • BACA konten data terkompresi 1GB dariblah.tar.gz, blok pada suatu waktu, ke dalam memori.
  • PROSES data terkompresi melaluigzip dekompresor dalam memori.
  • Ketika buffer memori terisi, itu akanpipa data itu, di memori, hingga keter parser format file, yang akan membaca informasi tentang metadata, dll. dan data file yang tidak terkompresi.
  • Sebagai buffer memori mengisi diter 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, gunakanXz 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.