Beranda » bagaimana » Apa Keuntungan Menggunakan Format File Tar Saat Ini?

    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 dari file ...  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 kontennya blah.tar.gz, lalu hapus tautan (hapus) file tersebut blah.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 fileblah.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 dan ter 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 merangkum ter, dan Anda memiliki arsip TAR LZMA2, yang sama efisiennya dengan algoritma paling canggih yang ada 7-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.