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
XZ
Il più potente fra i compressori abituali su Unix. Lo standard per scaricare codice sorgente e pacchetti.
XZ
XZ è un formato di flusso, scritto e letto dall’inizio alla fine. Si usa per l'archiviazione.
L’estensione è .xz e il nome per esteso è XZ Archive. Contano entrambi meno di ciò che il file può contenere, ed è di questo che parla il resto della pagina.
Risale al 2009.
L’età serve saperla per un motivo pratico: più un formato è vecchio, più programmi hanno avuto tempo di impararlo.
È 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.
XZ 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.
XZ comprime un solo flusso e non ha alcuna nozione di nome di file o di cartella. È per questo che lo si vede così spesso in coppia con TAR, che fornisce la struttura che gli manca.
Lavora su 8 MB alla volta: la ripetizione deve cadere tutta dentro questo spazio perché possa essere compressa via.
Quel solo numero spiega quasi tutta la differenza fra un formato di archivio e un altro. Uno spazio più grande trova più ripetizioni e ci mette più tempo e più memoria a farlo: tutto lo scambio è qui.
XZ 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.
xz, 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.
XZ è pensato per essere consegnato, non per lavorarci dentro. Modificarne uno è possibile e raramente piacevole; la strada sensata passa dall’originale e da una nuova esportazione.
Le lamentele ricorrenti: tiene un solo flusso e non sa descrivere una cartella.
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.
È l’intera distinzione dal 7z e spiega tutto il resto. Un file xz contiene esattamente un flusso compresso. Non ha directory, nessun elenco di nomi, nessuna nozione di più file. Comprimete `report.txt` e ottenete `report.txt.xz`; non c’è nient’altro dentro.
È per questo che `.tar.xz` è la forma normale. Il tar raggruppa l’albero di directory in un flusso e xz comprime quel flusso, la stessa divisione del lavoro di `.tar.gz`. Un `.7z` non ha bisogno di tar perché il 7z è già di per sé un formato d’archivio, e un `.xz` ne ha bisogno perché non lo è.
Entrambi usano LZMA2, quindi sugli stessi dati producono dimensioni molto simili. L’xz tipicamente batte il gzip del trenta per cento o più su testo, codice sorgente e log — il tipo di margine che trasforma un download da 100 MB in 65.
Lo ottiene con tempo e memoria. Comprimere ai livelli più alti può richiedere molte volte più tempo del gzip e può volere diverse centinaia di megabyte di memoria di lavoro. La decompressione è veloce ed economica comunque, la forma giusta per qualcosa compresso una volta e scaricato molte volte.
Il kernel Linux è distribuito come `.tar.xz`. Così sono la maggior parte degli archivi pacchetto delle distribuzioni e gran parte dei rilasci di codice sorgente. L’aritmetica è semplice: un file scaricato milioni di volte giustifica quasi qualunque sforzo di compressione, dato che il costo si paga una volta e il risparmio si moltiplica per ogni download.
È anche il motivo per cui si incontra l’xz principalmente scaricando software piuttosto che quando qualcuno vi manda un file. È un formato di distribuzione, non un formato di condivisione, e la differenza si vede negli strumenti attorno.
Nel marzo 2024 è stata trovata una backdoor nel software xz-utils — versioni 5.6.0 e 5.6.1, tracciata come CVE-2024-3094. Era stata introdotta deliberatamente da un collaboratore che aveva passato circa due anni a costruire fiducia nel progetto, e prendeva di mira il demone SSH sui sistemi dove una libreria collegata a xz veniva caricata al suo interno.
È stata scoperta da Andres Freund, uno sviluppatore che ha notato che gli accessi SSH impiegavano circa mezzo secondo in più del previsto e ha seguito l’anomalia invece di ignorarla. Le versioni colpite erano su rami di test e avevano appena raggiunto le distribuzioni stabili, quindi l’esposizione reale è stata piccola.
Nulla del formato di file è stato compromesso. La backdoor era in una particolare release di un particolare programma, non ha alterato come sono strutturati i file xz, e un `.xz` creato prima, durante o dopo quel periodo è un normale flusso compresso. Non c’è modo che un semplice file xz porti l’exploit.
Il significato duraturo riguarda come viene mantenuto il software open source più che la compressione. Resta la cosa più significativa che sia mai successa a questo formato, e vale la pena conoscerla accuratamente piuttosto che come una diceria secondo cui l’xz sia insicuro.
L’xz memorizza un checksum — CRC32, CRC64 o SHA-256 — e lo verifica alla decompressione. Se un byte è cambiato durante il transito o su un disco che si sta guastando, l’estrazione fallisce con un errore esplicito invece di produrre silenziosamente un output sbagliato.
È un vero vantaggio rispetto al gzip semplice, il cui controllo è più debole, ed è parte del motivo per cui le distribuzioni si fidano di esso per la consegna del software. Rileva il danno; non può ripararlo, l’unica cosa che il record di ripristino del RAR fa e nulla qui offre.
Zstandard, rilasciato da Facebook nel 2016, comprime quasi quanto xz a velocità vicine al gzip. Per qualunque cosa dove il tempo di compressione conta — build di pacchetti, backup eseguiti ogni notte, dati scritti continuamente — quella combinazione è difficile da contestare, e diverse distribuzioni hanno spostato il proprio formato pacchetto su di esso.
L’xz vince ancora sul rapporto puro alle impostazioni più alte, ciò che lo mantiene al suo posto per rilasci di codice sorgente e archivi del kernel dove il file viene costruito una volta. I due non competono davvero per lo stesso lavoro.
Ogni sistema Linux gestisce xz dalla riga di comando. macOS di serie non distribuisce alcun binario `xz` — Homebrew o MacPorts ne fornisce uno — ma il suo `tar` basato su libarchive scompatta un `.tar.xz` senza aiuto, cosa che copre gran parte di ciò che arriva. Windows ha bisogno di un’utility come 7-Zip, che lo legge senza difficoltà. Decomprimere un `.tar.xz` sono due passaggi che la maggior parte degli strumenti presenta come uno: disfare la compressione, poi scompattare il tar.
Non aspettatevi una cartella decomprimendo un `.xz` semplice. Ottenete esattamente un file indietro — la cosa che era stata compressa — perché è tutto ciò che il formato ha mai contenuto. Se vi aspettavate un albero di directory, l’archivio che volevate era il `.tar` dentro.
Usatelo quando qualcosa viene compresso una volta e recuperato molte volte: un rilascio, un download, un archivio destinato all’archiviazione a lungo termine dove ogni gigabyte si paga. I minuti extra al momento della compressione si ammortizzano su ogni recupero.
Non usatelo per inviare un file a una persona. Lo ZIP è ciò che il suo computer apre senza aiuto, e la differenza di dimensione su un singolo trasferimento raramente vale l’attrito di spiegare cos’è un `.xz` e come si apre.
| Estensione | .xz |
|---|---|
| Tipo di media | application/x-xz |
| Prima pubblicazione | 2009 |