ZIP o TAR: quale scegliere, e perché conta
Pubblicato il 21/08/2026 · 12 min di lettura · Strumenti per file
Daniel Okonkwo — Sviluppatore front-end e redattore Tech presso OneKitly
Performance web · Formati di file
Verificato su 4 fonti
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.
| Criterio | TAR da solo | ZIP | TAR + gzip (.tar.gz) |
|---|---|---|---|
| Dimensione dell'albero di prova | 63 488 byte — più grande del sorgente | 14 686 byte | 1 809 byte |
| Dove avviene la compressione | Da nessuna parte — accoda soltanto | Per membro, finestra azzerata ogni volta | Una volta, su tutto il flusso |
| Estrarre un file senza leggere il resto | In parte — le intestazioni sono in linea, ma vanno percorse | Sì — indice centrale in fondo al file | No — decomprimere dall'inizio |
| Permessi Unix e collegamenti simbolici | Nativi — modo, proprietario e tipo in ogni intestazione | Facoltativi — lo zip di sistema li salva, molti scrittori no | Nativi — lo strato gzip non cambia nulla |
| Si apre senza installare nulla | Windows 11 e Unix; non Windows 10 | Ovunque, da venticinque anni | Windows 11 e Unix; non Windows 10 |
| Un danno a metà ti costa | Circa un membro | Un membro; l'indice elenca ancora il resto | Tutto ciò che segue il danno |
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 →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?