Cookie di statistica e di pubblicità
Usiamo cookie di statistica e di pubblicità, entrambi inviati a Google. Rifiutare non cambia niente di quello che vedi.Leggi la pagina sulla privacy
TAR
Raggruppa i file senza comprimerli. Il passo di impacchettamento su Unix, quasi sempre accompagnato da GZ.
TAR
TAR è un contenitore: un involucro per flussi codificati da qualcos’altro. Si usa per l'archiviazione e spostare dati fra programmi.
L’estensione è .tar e il nome per esteso è Tape Archive. Contano entrambi meno di ciò che il file può contenere, ed è di questo che parla il resto della pagina.
Risale al 1979. La specifica è POSIX.1-2001 ustar.
A un formato rimasto leggibile così a lungo si può affidare qualcosa che vuoi ritrovare fra dieci anni.
È pubblicata per intero, quindi la si può implementare partendo dal documento invece che per osservazione: è per questo che il formato compare in così tanti programmi, ed è per questo che file scritti vent’anni fa si aprono ancora. Una specifica pubblicata però non è la stessa cosa di una esente da royalty: dove un formato incapsula un codec, le licenze sui brevetti restano una questione a parte che lo standard non risolve.
TAR conserva il suo contenuto esattamente. Risalvarlo non cambia nulla, quindi puoi aprirlo, modificarlo e risalvarlo quante volte vuoi senza accumulare danni: è questo che ne fa un formato di lavoro e non di consegna.
TAR conserva una directory: nomi, cartelle e la struttura in mezzo. È questo che gli permette di sostituire una cartella in un allegato di posta.
TAR porta con sé un codice di controllo, così un file danneggiato viene rilevato invece che letto male in silenzio.
Un codice di controllo non ripara nulla. Ti dice che il file è rovinato, ed è la differenza fra scoprirlo adesso e scoprirlo da chi te lo fa notare dopo averlo ricevuto.
tar, 7-Zip e Keka lo leggono, e così fanno quasi tutti i programmi dello stesso tipo.
Quando un file non si apre, il formato è raramente il problema: più spesso è il programma a essere più vecchio di lui. Convertire in qualcosa di più vecchio è la via d’uscita affidabile, ed è a questo che serve il resto di questo sito.
Nessun browser lo legge.
È di gran lunga il motivo più comune per convertirlo: non che il formato sia scadente, ma che il posto in cui vuoi mostrare il file non sappia leggerlo.
TAR è pensato per essere aperto e modificato. Tieni il file in questo formato per tutto il tempo in cui il lavoro va avanti, ed esporta da lì ogni volta che serve una copia finita.
Le lamentele ricorrenti: i file sono grandi per quello che contengono.
Nessuna di queste è un motivo per evitare il formato. Sono le cose che conviene conoscere prima che una di loro ti sorprenda, che è un’affermazione diversa e più utile.
Il TAR raggruppa i file in un solo file. Non li rende più piccoli. Il nome è l’abbreviazione di tape archive, ed è stato progettato nel 1979 per scrivere un albero di directory su un nastro magnetico in un unico flusso continuo — un lavoro dove la compressione era problema di qualcun altro e spesso dell’unità nastro stessa.
Quasi ogni cosa confusa sul TAR deriva da questo. Un `.tar` di una cartella è leggermente più grande della cartella originale, perché aggiunge un’intestazione prima di ogni file e riempie tutto a una dimensione di blocco fissa. Se vi aspettavate un file più piccolo, non è successo nulla di sbagliato; avete usato lo strumento che raggruppa invece dello strumento che riduce.
Perché sono girati due programmi separati. `archivio.tar.gz` è stato raggruppato da tar e poi l’unico file risultante è stato compresso da gzip. `.tar.bz2` usava bzip2, `.tar.xz` usava xz, `.tar.zst` usava zstd. La catena si legge da destra a sinistra: disfare la compressione, poi disfare il raggruppamento.
Le forme brevi `.tgz` e `.txz` significano la stessa cosa ed esistono perché alcuni filesystem un tempo si opponevano a più di un punto. Questa composizione di piccoli strumenti che fanno ciascuno un lavoro è deliberata piuttosto che accidentale, ed è anche il motivo per cui il TAR è sopravvissuto alle unità nastro per cui è stato scritto.
Questo ordinamento è il motivo per cui `.tar.gz` spesso batte lo ZIP sullo stesso contenuto. Lo ZIP comprime ogni file separatamente, quindi mille file di testo simili vengono compressi ciascuno in isolamento. Tar-poi-gzip presenta al compressore un unico flusso continuo, permettendogli di trovare ripetizioni che attraversano i confini dei file.
Su codice sorgente, file di log o qualunque cosa con molti piccoli file simili la differenza è sostanziale. Su una cartella di fotografie è vicina a zero, perché i JPEG sono già compressi e non c’è ripetizione fra file da trovare. Il vantaggio è reale ed è specifico a un tipo di contenuto.
Lo stesso flusso continuo è il motivo per cui estrarre un singolo file da un grande `.tar.gz` è lento. Non c’è indice, e la compressione fa sì che le posizioni dei byte non possano essere calcolate in anticipo, quindi l’unico modo per raggiungere un file vicino alla fine è decomprimere tutto ciò che lo precede.
Lo ZIP ha fatto lo scambio opposto. Il suo indice sta alla fine dell’archivio e ogni file è compresso indipendentemente, quindi qualunque singolo elemento si può estrarre immediatamente. È l’intero confronto: TAR per archivi letti dall’inizio, ZIP per archivi consultati a spizzichi.
Permessi Unix, proprietà, collegamenti simbolici e collegamenti fisici, più timestamp con più precisione di quanto lo ZIP registri. È per questo che il software viene distribuito come `.tar.gz` invece che ZIP: lo scompattamento deve produrre un albero dove l’eseguibile è ancora eseguibile e i collegamenti puntano ancora dove puntavano.
Su Windows gran parte di ciò non ha dove andare e viene scartato silenziosamente. Nulla si rompe, ma un `.tar.gz` scompattato su Windows e riimpacchettato ha perso i permessi che esisteva per portare — cosa che conta se l’archivio torna a un server.
Gzip è veloce, universale e la scelta predefinita sicura; è ciò che quasi tutto produce e tutto legge. Xz comprime notevolmente meglio e richiede considerevolmente più tempo, ciò che conviene per qualcosa scritto una volta e scaricato molte. Bzip2 sta fra i due ed è ormai in gran parte una scelta legacy. Zstd è l’entrata moderna e comprime vicino a xz a velocità vicine a gzip.
Per un file consegnato a qualcun altro, `.tar.gz` resta la risposta giusta, perché il limite è ciò che il destinatario può aprire piuttosto che ciò che comprime meglio. Gli altri vale la pena sceglierli quando conoscete l’altra parte.
Il progetto originale fissava i nomi dei file a 100 caratteri e non aveva spazio per file grandi o percorsi lunghi. Due estensioni lo hanno risolto indipendentemente — quella di GNU tar e il formato POSIX pax — e lo hanno risolto diversamente, quindi un archivio scritto da uno può confondere un lettore rigoroso che si aspetta l’altro.
In pratica gli strumenti moderni li leggono tutti e questo raramente emerge. Dove emerge, il sintomo è distintivo: nomi di file troncati, o un errore su un percorso troppo lungo, su un archivio altrimenti a posto.
Rilasci di codice sorgente, distribuzione di software Linux e macOS, layer di immagini Docker, backup di server, e i file di esportazione che pannelli di hosting e database producono. Se avete scaricato qualcosa da far girare su un server, è molto probabile che sia arrivato così.
Compare anche su Windows più di quanto accadesse un tempo. Windows scompatta nativamente `.tar.gz` dal 2023 e il comando tar integrato c’è dal 2018, quindi l’epoca in cui serviva uno strumento di terze parti solo per aprirne uno è in gran parte passata.
Convertite quando l’archivio va a una persona invece che a una macchina — un collega su Windows, un modulo di caricamento web, un allegato email. Lo ZIP è il formato che ogni sistema operativo apre senza pensarci, e inviare qualunque altra cosa chiede silenziosamente al destinatario di risolvere un problema.
Non convertite quando l’archivio torna a un sistema Unix. Riimpacchettare come ZIP scarta i permessi, la proprietà e i collegamenti simbolici che il formato esisteva per portare, e il risultato scompattato potrebbe non funzionare affatto. Per un backup server o un rilascio di codice sorgente, `.tar.gz` non è un ostacolo da aggirare; è la ragione per cui l’archivio funziona.
| Estensione | .tar |
|---|---|
| Tipo di media | application/x-tar |
| Prima pubblicazione | 1979 |
| Specifica | POSIX.1-2001 ustar |