Laman » bagaimana untuk » Apakah Kelebihan Menggunakan Format Fail Tar Hari Ini?

    Apakah Kelebihan Menggunakan Format Fail Tar Hari Ini?


    Format pengarkiban tar adalah, dalam tahun-tahun pengkomputeran, Metuselah yang benar tetapi masih digunakan berat hari ini. Apa yang membuatkan format tar sangat berguna lama selepas penubuhannya?

    Sesi Soalan & Jawapan hari ini datang kepada kami dengan ihsan SuperUser-bahagian pembahagian Stack Exchange, kumpulan yang diketuai oleh komuniti laman web Q & A.

    Soalan

    Pembaca SuperUser MarcusJ ingin tahu mengenai format tar dan mengapa kami masih menggunakannya selepas semua tahun ini:

    Saya tahu bahawa tar dibuat untuk arkib pita belakang pada hari ini, tetapi hari ini kita mempunyai format fail arkib yang kedua-dua fail agregat dan melakukan mampatan dalam format fail logik yang sama.

    Soalan:

    • Adakah denda akan dikenakan prestasi semasa penjumlahan / mampatan peringkat / penyahmampatan untuk menggunakan tar terkandung dalam gzip atau bzip2, jika dibandingkan dengan menggunakan format fail yang tidak pengagregatan dan mampatan dalam struktur data yang sama? Anggapkan runtime pemampat yang dibandingkan sama (contohnya gzip dan Deflate adalah sama).
    • Adakah terdapat ciri-ciri format fail tar yang format fail lain, seperti .7z dan .zip tidak ada?
    • Sejak tar adalah satu format lama fail, dan format fail baru wujud pada hari ini, mengapa tar (sama ada terkandung dalam gzip, bzip2 atau xz baru) masih digunakan secara meluas hari ini pada GNU / Linux, Android, BSD, dan lain-lain UNIX seperti sistem pengendalian, untuk pemindahan fail, sumber program dan muat turun binari, dan kadang-kadang juga sebagai format pengurus pakej?

    Itulah soalan yang sangat munasabah; begitu banyak telah berubah dalam dunia pengkomputeran dalam tiga puluh tahun yang lalu tetapi kami masih menggunakan format tar. Apa cerita itu?

    Jawapan

    Penyumbang SuperUser Allquixotic menawarkan beberapa pandangan tentang panjang umur dan fungsi format tar:

    Bahagian 1: Prestasi

    Berikut adalah perbandingan dua aliran kerja yang berasingan dan apa yang mereka lakukan.

    Anda mempunyai fail pada cakera blah.tar.gz iaitu, katakan data 1 GB gzip yang dikompresi yang, apabila tidak dikompresi, menempati 2 GB (jadi nisbah mampatan sebanyak 50%).

    Cara yang anda akan buat ini, jika anda melakukan pengarsipan dan pemampatan secara berasingan, akan:

    tar cf blah.tar files ... 

    Ini akan menyebabkan blah.tar yang merupakan pengagregatan semata-mata fail ...  dalam bentuk tidak terkompresi.

    Kemudian anda akan lakukan

    gzip blah.tar 

    Ini akan membaca kandungan blah.tar dari cakera, tekan mereka melalui algoritma pemampatan gzip, tulis kandungan tersebut blah.tar.gz, kemudian hapuskan (hapuskan) fail tersebut blah.tar.

    Sekarang, mari kita mengecek!

    Jalan 1

    Kamu ada blah.tar.gz, satu cara atau yang lain.

    Anda memutuskan untuk menjalankan:

    gunzip blah.tar.gz 

    Ini akan

    • BACAL kandungan data mampatan 1GB blah.tar.gz.
    • PROSES data termampat melalui gzip penyahmampatan dalam ingatan.
    • Oleh kerana penampan memori mengisi data bernilai "blok", MENGULANG data yang tidak dimampatkan ke dalam failblah.tar pada cakera dan ulangi sehingga semua data termampat dibaca.
    • Nyahpaut (hapuskan) fail tersebut blah.tar.gz.

    Sekarang, awak ada blah.tar pada cakera, yang tidak dikompresi tetapi mengandungi satu atau lebih fail di dalamnya, dengan overhead struktur data yang sangat rendah. Saiz fail mungkin beberapa bait lebih besar daripada jumlah semua data fail.

    Anda menjalankan:

    tar xvf blah.tar 

    Ini akan

    • BACA 2GB kandungan data yang tidak dimampatkan blah.tar dan juga tar struktur data format fail, termasuk maklumat mengenai kebenaran fail, nama fail, direktori, dan lain-lain.
    • RAWUHkan cakera 2GB data ditambah metadata. Ini melibatkan: menterjemahkan struktur data / maklumat metadata ke dalam membuat fail dan direktori baru pada cakera yang sesuai, atau menulis semula fail dan direktori sedia ada dengan kandungan data baru.

    Jumlah data kami BACA dari cakera dalam proses ini adalah 1GB (untuk gunzip) + 2GB (untuk tar) = 3GB.

    Jumlah data kami WROTE ke cakera dalam proses ini adalah 2GB (untuk gunzip) + 2GB (untuk tar) + beberapa bait untuk metadata = kira-kira 4GB.

    Jalan 2

    Kamu ada blah.tar.gz, satu cara atau yang lain.

    Anda memutuskan untuk menjalankan:

    tar xvzf blah.tar.gz 

    Ini akan

    • BACAL kandungan data mampatan 1GB blah.tar.gz, satu blok pada suatu masa, ke dalam ingatan.
    • PROSES data termampat melalui gzip penyahmampatan dalam ingatan.
    • Apabila penimbal memori mengisi, ia akan paip bahawa data, dalam memori, melalui kepada tar format parser fail, yang akan membaca maklumat mengenai metadata, dan lain-lain dan data fail yang tidak dimampatkan.
    • Oleh kerana penampan ingatan mengisi di dalam tar fail parser, ia akan MENULIS data yang tidak dikompresi ke cakera, dengan membuat fail dan direktori dan mengisinya dengan kandungan yang tidak dikompres.

    Jumlah data kami BACA dari cakera dalam proses ini adalah 1GB data termampat, tempoh.

    Jumlah data kami WROTE ke cakera dalam proses ini adalah 2GB data tidak terkompresi + beberapa bait untuk metadata = sekitar 2GB.

    Jika anda perasan, jumlah cakera I / O masuk Jalan 2 adalah sama kepada cakera I / O yang dilakukan oleh, katakan, yang Zip atau7-Zip program, menyesuaikan untuk sebarang perbezaan nisbah mampatan.

    Dan jika nisbah mampatan adalah kebimbangan anda, gunakan Xz pemampat untuk merangkum tar, dan anda mempunyai arsip LZMA2'ed TAR, yang sama efisiennya dengan algoritma yang paling maju 7-Zip :-)

    Bahagian 2: Ciri-ciri

    tar Kedai UNIX kebenaran dalam metadata fail, dan sangat terkenal dan diuji untuk berjaya pembungkusan sehingga direktori dengan semua jenis kebenaran berlainan, pautan simbolik, dan lain-lain Terdapat lebih daripada beberapa keadaan di mana seseorang mungkin perlu Glob sekumpulan fail ke dalam satu fail atau aliran tunggal, tetapi tidak semestinya memampatkannya (walaupun mampatan berguna dan sering digunakan).

    Bahagian 3: Keserasian

    Banyak alat diedarkan dalam bentuk sumber atau binari sebagai .tar.gz atau .tar.bz2 kerana ia adalah format fail "penyebut biasa paling rendah": sama seperti kebanyakan pengguna Windows mempunyai akses kepada .zip atau .rar decompressors, kebanyakan pemasangan Linux, walaupun yang paling asas, akan mempunyai akses kepada sekurang-kurangnya tar dan gunzip, tidak kira betapa lama atau kurang. Malah firmware Android mempunyai akses kepada alat ini.

    Projek-projek baru menyasarkan khalayak berjalan pengagihan moden boleh dengan baik mengedarkan dalam format yang lebih moden, seperti .tar.xz (menggunakan Xz (LZMA) format mampatan, yang memampatkan lebih baik daripada gzip atau bzip2), atau .7 z, yang adalah sama dengan format fail Zip atau Rar kerana kedua-duanya memampatkan dan menentukan susun atur untuk mencampurkan pelbagai fail ke dalam fail tunggal.

    Anda tidak melihat .7z digunakan lebih kerap kerana alasan yang sama bahawa muzik tidak dijual dari kedai muat turun dalam talian dalam format baru seperti Opus, atau video dalam WebM. Keserasian dengan orang yang menjalankan sistem kuno atau sangat asas.


    Mempunyai sesuatu untuk menambah penjelasannya? Bunyi dalam komen. Ingin membaca lebih banyak jawapan dari pengguna Stack Exchange yang berteknologi tinggi? Lihat thread perbincangan penuh di sini.