Vai al contenuto
OneKitly

ZIP o TAR: quale scegliere, e perché conta

Pubblicato il 21/08/2026 · 12 min di lettura · Strumenti per file

Daniel Okonkwo

Daniel OkonkwoSviluppatore front-end e redattore Tech presso OneKitly

Performance web · Formati di file

Verificato su 4 fonti

Vedi il profilo
In breve

Manda uno ZIP se non sai che cosa usa chi lo riceve. Usa un .tar.gz se i file sono molti, piccoli e simili, o se permessi e collegamenti simbolici devono sopravvivere. Tutto il resto discende da un fatto strutturale: il TAR non comprime affatto — accoda i file dietro intestazioni da 512 byte — mentre lo ZIP comprime ogni membro separatamente. La compressione viene poi applicata all'intero TAR come a un unico flusso, da cui la doppia estensione. Ecco quanto vale, misurato. Sessanta file JavaScript quasi identici, 193 byte ciascuno, 11 604 byte di sorgente in tutto. Come .tar semplice: 63 488 byte — cinque volte e mezza il sorgente, perché ogni membro viene riempito fino a un blocco intero di 512 byte. Come .tar.gz: 1 809 byte. Come .zip: 14 686 byte. Il .tar.gz è otto volte più piccolo dello .zip che contiene esattamente gli stessi file, e alzare la manopola di compressione dello ZIP non cambia assolutamente nulla: l'archivio esce a 14 490 byte a ogni livello da 1 a 9, perché ogni membro pesa 193 byte e dentro un singolo file non c'è nulla da trovare. Gzip li vede tutti e sessanta insieme e si accorge che si ripetono. Il prezzo è l'immagine speculare: uno ZIP porta un indice centrale, quindi un lettore salta dritto a un membro; un .tar.gz non ha alcun indice, quindi estrarre un file obbliga a decomprimere il flusso dall'inizio. È questo lo scambio, e nessuno dei due lo vince del tutto.

Una sola differenza strutturale spiega tutto il resto: il TAR non comprime, impila; lo ZIP comprime ogni file per conto suo. Misurato su 60 piccoli file sorgente, fa 1 809 byte contro 14 686.

La differenza strutturale, in un paragrafo

Un file TAR è una pila. Per ogni membro scrive un'intestazione da 512 byte — nome, permessi, proprietario, dimensione in ottale, data di modifica, somma di controllo, indicatore di tipo — poi i byte del file, poi riempimento fino al successivo blocco intero da 512 byte. Due blocchi di zeri segnano la fine. Nessun indice, nessuna compressione, nessuna contabilità astuta: è tutto qui il formato, e non è quasi cambiato da quando fu progettato per le unità a nastro, da cui il nome.

Uno ZIP è uno schedario. Ogni membro è compresso per conto suo con deflate e scritto con la propria intestazione locale; in fondo al file arriva un indice centrale che elenca ogni membro, la sua dimensione, la sua dimensione compressa e il punto in cui comincia. Un lettore apre gli ultimi kilobyte, legge l'indice e conosce tutto il contenuto senza toccare un byte dei dati. È quel progetto la ragione per cui un client di posta può mostrarti che cosa c'è dentro un allegato prima che tu lo estragga.

Tutto il resto di questo articolo discende da quei due paragrafi. La dimensione, l'estrazione di un singolo file, i permessi, i collegamenti simbolici, il comportamento davanti alla corruzione: niente di ciò è arbitrario, e niente richiede di imparare a memoria una tabella comparativa, una volta che ti immagini una pila da un lato e uno schedario dall'altro.

Perché .tar.gz vince su tanti file piccoli e simili

Il deflate lavora individuando ripetizioni dentro una finestra scorrevole e sostituendo la seconda copia con un riferimento corto. In uno ZIP quella finestra viene azzerata all'inizio di ogni membro, quindi un compressore davanti a un file JavaScript da 193 byte non ha quasi nulla su cui lavorare: gli import, l'impalcatura e la graffa finale stanno negli altri cinquantanove file, e non li vedrà mai. In un .tar.gz gli si consegna un flusso continuo di 63 488 byte in cui quelle cinquantanove copie sono lì, a poche centinaia di byte di distanza.

La misura lo rende concreto. Gli stessi sessanta file: 1 809 byte in .tar.gz contro 14 686 in .zip. Non è questione di regolazione. Passare quei sessanta in uno scrittore ZIP a ogni livello di compressione da 1 a 9 ha prodotto nove volte lo stesso archivio da 14 490 byte, byte per byte: la manopola non è collegata a nulla, perché dentro un file da 193 byte non c'è niente su cui il livello massimo possa faticare di più. Al livello 0, che memorizza invece di comprimere, lo ZIP arrivava a 18 328 byte: la compressione qualcosa fa, dunque; semplicemente lo fa nel posto sbagliato.

Rovescia il corpus e il vantaggio evapora. Comprimi un solo file di testo da 92 KB: 33 202 byte come ZIP a un membro, 33 110 byte come gzip — 92 byte di differenza, tre per mille. Non c'è ridondanza fra file quando c'è un solo file. La regola quindi non è «tar.gz è meglio», è: più i membri sono numerosi, piccoli e simili, più il divario cresce; un solo file grande, nessun divario.

Il costo: nessun indice, e nessun modo di prendere un solo file

La compressione solida è proprio la ragione per cui un .tar.gz non si apre a metà. Il flusso compresso è una lunga catena in cui il byte numero un milione dipende da tutto ciò che lo precede, quindi un programma a cui si chiede l'ultimo di sessanta file deve decomprimere i primi cinquantanove per arrivarci. Uno ZIP fa il contrario: gli archivi costruiti per questo articolo portano un record di indice centrale per ogni membro, e un lettore ci salta, trova la posizione e decomprime 193 byte.

La stessa asimmetria decide che cosa succede quando un archivio si danneggia. Corrompi qualche byte in uno ZIP e di solito perdi il membro a cui appartengono; l'indice centrale continua a elencare il resto e uno strumento di riparazione spesso lo recupera. Corrompi qualche byte vicino all'inizio di un .tar.gz e tutto ciò che segue il danno diventa irraggiungibile, perché lo stato del decompressore è perduto. Se scrivi su supporti poco affidabili, o trasferisci su un collegamento che cade, quella differenza non ha nulla di accademico.

Permessi e collegamenti simbolici: che cosa questo convertitore ha davvero perso

L'albero di prova non era solo sessanta file. Conteneva anche una directory, un file marcato eseguibile e un collegamento simbolico che punta a un altro file. Impacchettati dagli strumenti di sistema, entrambi i formati hanno tenuto tutto. Il .tar portava un modo 000755 sull'eseguibile e un indicatore di tipo 2 sul collegamento. Lo .zip portava 62 voci di indice centrale: i sessanta file, la directory come 040755, l'eseguibile come 0100755 e latest.js come 0120755 — un collegamento simbolico lungo diciassette byte, e quei byte sono il percorso a cui punta.

Su quest'ultimo fatto vale la pena fermarsi, perché la leggenda dice che lo ZIP non può portare metadati Unix. Può. Il formato riserva un campo esattamente per questo, e lo strumento zip standard su Unix lo riempie. Ciò che è vero è che quel campo è facoltativo, che è chi scrive a decidere se riempirlo, e che moltissimi scrittori non lo fanno.

Il convertitore di questa pagina è uno di quelli, ed eseguirlo l'ha reso visibile. Il suo lettore TAR tiene solo le voci il cui indicatore di tipo dice «file ordinario», quindi la directory e il collegamento simbolico sono stati scartati senza una parola: sessanta membri dentro, sessanta fuori, e due oggetti spariti. La sua rappresentazione interna di un membro è un percorso e un blocco di byte, senza campo per i permessi: lo 000755 dell'intestazione tar non ha dove andare. Ispezionare lo ZIP prodotto lo conferma: 60 voci, tutte dichiarate come provenienti da un sistema in stile DOS, ogni campo dei permessi a zero. Nessuna directory, nessun collegamento, nessun bit di esecuzione.

Per il compito a cui serve questa pagina — un .tar.gz che qualcuno ti ha mandato e di cui vuoi il contenuto su una macchina che non lo apre — niente di tutto ciò conta. Per riconfezionare un rilascio, un backup o qualsiasi cosa con dentro degli script, tutto ciò conta, e conviene riconfezionare con gli strumenti di sistema. Sapere in quale dei due casi ti trovi è tutta l'abilità.

Quale può aprire chi lo riceve senza installare nulla

Di solito è questo a decidere, e la risposta onesta è cambiata. Lo ZIP è leggibile in Esplora risorse di Windows dal 2001 e nell'Utility Archivio di macOS fin dall'inizio; non c'è mai stata una macchina su cui mandare uno ZIP fosse una scommessa sbagliata. Con il TAR era il contrario: fuori da Unix serviva un programma di terze parti, cioè chiedere a un collega di installare software prima di poter leggere il tuo allegato.

Quel divario si è chiuso. Windows 11 ha aggiunto a Esplora file la lettura nativa di .tar, .tar.gz, .tgz, .tar.bz2, .tar.xz, .tar.zst, .rar e .7z, annunciata nel 2023 e distribuita nelle versioni successive. Su un Windows 11 aggiornato, quindi, un .tar.gz si apre con un doppio clic senza installare nulla. Il problema è tutto ciò che non è un Windows 11 aggiornato: macchine con Windows 10, immagini aziendali bloccate, l'anteprima web di un client di posta, un gestore documentale, un telefono. Lo ZIP funziona in tutti.

La regola pratica è quindi asimmetrica, e non dice quale formato sia migliore. Se archivi, distribuisci o sposti file fra macchine che controlli: .tar.gz — più piccolo sugli alberi di sorgenti, e conserva i metadati. Se mandi a una persona: ZIP, salvo che tu sappia che cosa usa. Convertire dall'uno all'altro richiede secondi, ed è a questo che serve lo strumento di questa pagina; fa' solo la conversione nel verso che non perde nulla a cui tieni.

Gli stessi criteri applicati a entrambi, e alla loro combinazione — misurati sullo stesso albero di 60 file, 11 604 byte di sorgente
CriterioTAR da soloZIPTAR + gzip (.tar.gz)
Dimensione dell'albero di prova63 488 byte — più grande del sorgente14 686 byte1 809 byte
Dove avviene la compressioneDa nessuna parte — accoda soltantoPer membro, finestra azzerata ogni voltaUna volta, su tutto il flusso
Estrarre un file senza leggere il restoIn parte — le intestazioni sono in linea, ma vanno percorseSì — indice centrale in fondo al fileNo — decomprimere dall'inizio
Permessi Unix e collegamenti simboliciNativi — modo, proprietario e tipo in ogni intestazioneFacoltativi — lo zip di sistema li salva, molti scrittori noNativi — lo strato gzip non cambia nulla
Si apre senza installare nullaWindows 11 e Unix; non Windows 10Ovunque, da venticinque anniWindows 11 e Unix; non Windows 10
Un danno a metà ti costaCirca un membroUn membro; l'indice elenca ancora il restoTutto ciò che segue il danno
TAR in ZIPRiconfeziona un archivio .tar, .tar.gz o .tgz in ZIP, che Windows apre senza software extra.Prova lo strumento

Domande frequenti

Un .tgz è la stessa cosa di un .tar.gz?
Sì, byte per byte. .tgz è una contrazione nata perché MS-DOS ammetteva solo tre caratteri dopo il punto, ed è sopravvissuta alla sua ragione. Tutto ciò che legge l'uno legge l'altro. Lo stesso vale per .tbz2 e .tar.bz2, .txz e .tar.xz, .tzst e .tar.zst. Il convertitore qui annusa i byte invece dell'estensione, quindi accetta una qualsiasi di queste grafie — e accetta anche un file col nome sbagliato, che è più spesso la situazione reale.
Perché il mio .tar è più grande dei file che contiene?
Perché il TAR non comprime e perché arrotonda. Ogni membro costa un'intestazione da 512 byte più i propri byte riempiti fino a un blocco intero di 512, e l'archivio finisce con 1 024 byte di zeri. Sull'albero di prova questo ha trasformato 11 604 byte di sorgente in un .tar da 63 488 byte — cinque volte e mezza tanto, perché sessanta file da 193 byte occupano ciascuno un kilobyte pieno di intestazione e riempimento. Non è un difetto: è l'aspetto di un formato pensato per essere scritto su nastro a blocchi fissi. Comprimilo e il riempimento, fatto di zeri, sparisce quasi del tutto.
Convertire un .tar.gz in ZIP lo renderà più grande?
Spesso sì, e a volte di molto. Il verso della conversione disfa proprio ciò che rendeva piccolo il .tar.gz: l'archivio viene spacchettato in file singoli, poi ciascuno è compresso per conto suo. Sull'albero di prova da sessanta file, lo ZIP in uscita era di 14 490 byte contro 1 809 in ingresso — otto volte tanto per lo stesso contenuto. Se l'archivio contiene pochi file grandi e già compressi (fotografie, video, un dump di database compresso prima di entrarci), la differenza sarà quasi nulla. Se contiene un albero di sorgenti, aspettati un salto.
Il livello di compressione dello strumento serve a qualcosa?
Fra «nessuna» e le altre due sì: memorizzare invece di comprimere dava 18 328 byte contro 14 490 sull'albero di prova. Fra «normale» e «massima», su quello stesso albero, no — le due hanno prodotto file identici, e così ogni livello intermedio. Su un singolo documento da 92 KB l'impostazione massima ha risparmiato 39 byte rispetto a quella predefinita. I livelli di compressione si guadagnano lo stipendio su membri grandi e ricchi di testo; su un mucchio di piccoli sono una manopola collegata a nulla. Scegli «nessuna» quando il contenuto è già compresso e vuoi solo un contenitore, e lascia su normale negli altri casi.
Posso mantenere i permessi convertendo TAR in ZIP qui?
No, e lo strumento non lo dice. La sua rappresentazione interna di un membro è un percorso e un blocco di byte, senza campo per il modo, quindi i permessi nelle intestazioni tar vengono oltrepassati in lettura e mai riscritti; lo ZIP prodotto per questo articolo aveva il campo dei permessi a zero su tutti e sessanta i membri. I collegamenti simbolici e le voci di directory vengono scartati per la stessa ragione: si conservano solo i membri marcati come file ordinari. Se questo conta, riconfeziona con tar e zip da riga di comando, dove entrambi i formati portano i metadati in modo nativo. Se stai solo cercando di leggere l'archivio di qualcuno su una macchina che non lo apre, niente di ciò ti riguarda.

Articoli che potrebbero interessarti

Tutte le guide
TutorialDividere un file troppo grande da inviareL'ultima risorsa quando nulla può più essere compresso. Funziona, e ha tre spigoli: le parti da sole non servono a nulla, l'ordine è assoluto, e il megabyte che imposti non è quello del limite.SpiegazioneConvertire le formule in valori conserva la risposta in cache, non il calcoloUn file di foglio di calcolo conserva sia la formula sia l'ultima risposta calcolata da Excel. Togliere la formula lascia la risposta memorizzata — e lascia un vuoto ovunque il file non ne portasse alcuna.SpiegazioneIl numero 1 e il testo «1» non sono doppioniLa deduplicazione confronta righe intere in modo esatto, tipo di cella compreso. Cinque righe d'aspetto identico sono uscite come tre: una portava un numero, una una stringa e una una stringa con uno spazio davanti.ConfrontoXLS, XLSX, XLSM e XLSB: qual è quale, e quale ti serveQuattro estensioni, tre delle quali sono la stessa scatola con coperchi diversi. Rinomina un XLSX in .zip e si apre: questo solo fatto spiega tutta la famiglia, e spiega perché XLS, che così non si apre, resti quello che dà problemi.TutorialNumerare un PDF quando le pagine sono ruotate o di formati diversiNumerare un documento ordinato è banale. Ciò che morde è una pagina coricata, un foglio Letter fra pagine A4, un file di stampa con abbondanza e un documento che stampa già il proprio numero. Tutti e quattro sono stati provati: nei primi tre il numero finisce esattamente dove l'hai chiesto, e il quarto non viene rilevato affatto.GuidaChe cosa dice di te un PDF: leggere e cancellare i suoi metadatiUn PDF porta i suoi metadati due volte, in due depositi che possono raccontare storie diverse, e nessuno dei due è la storia intera. Ecco che cosa c'è davvero nel file, che cosa la cancellazione toglie e le due cose che sopravvivono a ogni pulizia.

Strumenti correlati

Questo descrive ciò che questi convertitori fanno oggi, verificato eseguendo il loro stesso codice su file reali, e non ciò che dovrebbero fare. Il comportamento di un formato dipende dalla versione di Excel, LibreOffice o Numbers che ha scritto il file e da quella che lo aprirà, quindi conserva l'originale finché non hai aperto la copia convertita e non l'hai guardata. Tutto ciò che conta — una cartella con macro, un modello pieno di formule, un file su cui qualcun altro farà affidamento — si controlla cella per cella dopo la conversione, non si dà per buono perché una barra di avanzamento è arrivata in fondo.

Fonti

Hai notato un errore in questo articolo?