Homepage » come » Qual è il vantaggio dell'utilizzo del formato di file tar oggi?

    Qual è il vantaggio dell'utilizzo del formato di file tar oggi?


    Il formato di archiviazione di tar è, negli anni dell'informatica, un vero Matusalemme ma è ancora oggi in uso pesante. Ciò che rende il formato tar così utile a lungo dopo il suo inizio?

    La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di siti Web di domande e risposte basato sulla comunità.

    La domanda

    Il lettore SuperUser MarcusJ è curioso del formato tar e del motivo per cui lo stiamo ancora utilizzando dopo tutti questi anni:

    So che tar è stato creato per gli archivi su nastro nel corso della giornata, ma oggi abbiamo formati di file di archivio che aggregano entrambi i file ed eseguono la compressione all'interno dello stesso formato di file logico.

    Domande:

    • Esiste una penalizzazione delle prestazioni durante le fasi di aggregazione / compressione / decompressione per l'utilizzo di tar incapsulato in gzip o bzip2, rispetto all'utilizzo di un formato file che fa aggregazione e compressione nella stessa struttura dati? Si supponga che il tempo di esecuzione del compressore da confrontare sia identico (ad esempio, gzip e Deflate sono simili).
    • Ci sono funzionalità del formato di file tar che altri formati di file, come .7z e .zip non hanno?
    • Dato che tar è un formato di file così vecchio, e oggi esistono formati di file più recenti, perché tar (sia incapsulato in gzip, bzip2 o anche il nuovo xz) ancora oggi ampiamente utilizzato su GNU / Linux, Android, BSD e altri UNIX simili sistemi operativi, per trasferimenti di file, download di sorgenti e download di programmi, e talvolta anche come formato di gestore di pacchetti?

    Questa è una domanda perfettamente ragionevole; così tanto è cambiato nel mondo informatico negli ultimi trent'anni, ma stiamo ancora usando il formato tar. Qual è la storia?

    La risposta

    Collaboratore SuperUser Allquixotic offre alcune informazioni sulla longevità e funzionalità del formato tar:

    Parte 1: prestazioni

    Ecco un confronto tra due flussi di lavoro separati e ciò che fanno.

    Hai un file su disco blah.tar.gz vale a dire 1 GB di dati compressi con gzip che, quando non compressi, occupa 2 GB (quindi un rapporto di compressione del 50%).

    Il modo in cui lo creeresti, se dovessi eseguire l'archiviazione e la compressione separatamente, sarebbe:

    file tar cf blah.tar ... 

    Ciò comporterebbe blah.tar che è una semplice aggregazione del File…  in forma non compressa.

    Allora lo faresti

    gzip blah.tar 

    Questo avrebbe letto il contenuto di blah.tar dal disco, comprimili tramite l'algoritmo di compressione gzip, scrivi i contenuti in blah.tar.gz, quindi scollegare (eliminare) il file blah.tar.

    Ora, decomprimiamo!

    Modo 1

    Hai blah.tar.gz, in un modo o nell'altro.

    Decidi di eseguire:

    gunzip blah.tar.gz 

    Questo sarà

    • LEGGI il contenuto dei dati compressi da 1 GB di blah.tar.gz.
    • PROCESSI i dati compressi attraverso il gzip decompressore in memoria.
    • Mentre il buffer di memoria si riempie di "un blocco" di dati, WRITE i dati non compressi nel fileblah.tar su disco e ripetere finché non vengono letti tutti i dati compressi.
    • Scollegare (eliminare) il file blah.tar.gz.

    Ora, hai blah.tar su disco, che non è compresso ma contiene uno o più file al suo interno, con un sovraccarico di struttura dati molto basso. La dimensione del file è probabilmente un paio di byte più grande della somma di tutti i dati del file sarebbe.

    Tu corri:

    tar xvf blah.tar 

    Questo sarà

    • LEGGI i 2 GB di contenuti di dati non compressi di blah.tar e il catrame strutture di dati del formato di file, incluse informazioni su permessi di file, nomi di file, directory, ecc.
    • SCRIVI su disco i 2 GB di dati più i metadati. Ciò comporta: la conversione delle informazioni sulla struttura dati / metadati nella creazione di nuovi file e directory sul disco, come appropriato, o la riscrittura di file e directory esistenti con nuovi contenuti di dati.

    I dati totali noi LEGGERE da disco in questo processo era 1 GB (per gunzip) + 2 GB (per tar) = 3 GB.

    I dati totali noi SCRITTO su disco in questo processo era 2 GB (per gunzip) + 2 GB (per tar) + pochi byte per i metadati = circa 4 GB.

    Via 2

    Hai blah.tar.gz, in un modo o nell'altro.

    Decidi di eseguire:

    tar xvzf blah.tar.gz 

    Questo sarà

    • LEGGI il contenuto dei dati compressi da 1 GB di blah.tar.gz, un blocco alla volta, nella memoria.
    • PROCESSI i dati compressi attraverso il gzip decompressore in memoria.
    • Come il buffer di memoria si riempie, lo farà tubo quei dati, in memoria, fino al catrame parser del formato file, che leggerà le informazioni sui metadati, ecc. e i dati del file non compresso.
    • Come il buffer di memoria si riempie nel catrame analizzatore di file, SCRIVE i dati non compressi su disco, creando file e directory e riempiendoli con i contenuti non compressi.

    I dati totali noi LEGGERE dal disco in questo processo era 1 GB di dati compressi, punto.

    I dati totali noi SCRITTO su disco in questo processo c'erano 2 GB di dati non compressi + pochi byte per i metadati = circa 2 GB.

    Se si nota, la quantità di I / O del disco in Via 2 è identico al disco I / O eseguito da, diciamo, il Cerniera lampo o7-Zip programmi, regolando eventuali differenze nel rapporto di compressione.

    E se il rapporto di compressione è la tua preoccupazione, usa il xz compressore per incapsulare catrame, e hai l'archivio TAR di LZMA2, che è altrettanto efficiente dell'algoritmo più avanzato a disposizione 7-Zip :-)

    Parte 2: caratteristiche

    catrame memorizza le autorizzazioni UNIX all'interno dei suoi metadati di file, ed è molto ben noto e testato per riempire con successo una directory con tutti i tipi di permessi, collegamenti simbolici, ecc. Ci sono più di un paio di casi in cui si potrebbe aver bisogno di inserire un gruppo di file in un singolo file o flusso, ma non necessariamente comprimerlo (sebbene la compressione sia utile e spesso utilizzata).

    Parte 3: compatibilità

    Molti strumenti sono distribuiti in formato sorgente o binario come .tar.gz o .tar.bz2 perché è un formato di file "minimo comune denominatore": molto simile alla maggior parte degli utenti Windows ha accesso ai decompressori .zip o .rar, la maggior parte delle installazioni Linux, anche il più elementare, avrà accesso almeno a catrame e gunzip, non importa quanti anni ha o ridotto. Anche i firmware Android hanno accesso a questi strumenti.

    Nuovi progetti rivolti a pubblici che eseguono distribuzioni moderne possono benissimo distribuire in un formato più moderno, come .tar.xz (usando il formato di compressione Xz (LZMA), che comprime meglio di gzip o bzip2) o .7z, che è simile a i formati di file Zip o Rar in quanto entrambi comprime e specifica un layout per incapsulare più file in un singolo file.

    Non si vede .7z utilizzato più spesso per lo stesso motivo per cui la musica non viene venduta da negozi di download online in formati nuovi come Opus o video in WebM. Compatibilità con le persone che eseguono sistemi antichi o di base.


    Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.