Formato archivio XZ
XZ è un formato di archivio ad alta compressione utilizzato principalmente per comprimere singoli file, offrendo efficienza di compressione superiore e compatibilità open source. Sviluppato come parte di XZ Utils, questo formato è noto per l’uso dell’algoritmo di compressione LZMA2, che raggiunge rapporti di compressione elevati mantenendo velocità di decompressione ragionevoli. Gli archivi XZ sono ampiamente utilizzati nella distribuzione di pacchetti software, specialmente nei sistemi operativi simili a Unix come Linux.
Informazioni generali sull'archivio XZ
Gli archivi XZ sono progettati per fornire una compressione efficiente con particolare attenzione alla riduzione delle dimensioni dei file per l’archiviazione e la distribuzione. Il formato utilizza l’algoritmo LZMA2, che combina la compressione del dizionario e la codifica entropica, rendendolo altamente efficace per la compressione di file di grandi dimensioni. Gli archivi XZ in genere contengono un singolo file compresso, ma possono essere combinati con altri strumenti come tar per comprimere intere directory. Il formato XZ viene spesso utilizzato nella distribuzione di software, nel backup dei dati e nell’archiviazione, in particolare nell’ecosistema Linux, dove è diventato uno standard per il confezionamento di software e aggiornamenti di sistema.
Informazioni sulla cronologia XZ
- 2005: il formato XZ ha iniziato lo sviluppo come parte del progetto XZ Utils, che mirava a creare un successore più efficiente del vecchio formato LZMA.
- 2009: XZ Utils viene ufficialmente rilasciato, introducendo il formato XZ come nuovo standard per esigenze di alta compressione.
- 2010: XZ inizia a guadagnare popolarità nella comunità Linux, diventando rapidamente il formato preferito per la compressione di pacchetti software e archivi di sistema.
- 2011: le principali distribuzioni Linux, tra cui Debian e Arch Linux, hanno iniziato ad adottare XZ come formato di compressione predefinito per i loro repository di pacchetti.
- 2014: l’utilizzo di XZ si è espanso oltre Linux, diventando popolare per la distribuzione di software multipiattaforma, in particolare per le applicazioni che richiedono rapporti di compressione elevati.
- 2020: XZ rimane ampiamente utilizzato nella confezione di software, nell’archiviazione e nella distribuzione dei dati, soprattutto in ambienti in cui una compressione efficiente è fondamentale.
Struttura dell'archivio XZ
Il formato di archivio XZ è progettato per la compressione di file singoli e utilizza una struttura semplice per ottenere rapporti di compressione elevati. Ecco una panoramica della struttura di un archivio XZ:
- Intestazione: l’intestazione contiene metadati sull’archivio XZ, inclusa la versione del formato, i flag e qualsiasi estensione opzionale utilizzata. Indica inoltre la presenza di checksum per l’integrità dei dati.
- Flusso di dati compressi: il nucleo dell’archivio XZ è il flusso di dati compressi. Questa sezione contiene i dati effettivi del file, compressi utilizzando l’algoritmo LZMA2. Il flusso di dati è diviso in blocchi, consentendo una compressione e decompressione efficiente. Ogni blocco può essere decompresso in modo indipendente, il che aiuta a recuperare i dati anche se l’archivio è parzialmente danneggiato.
- Piè di pagina: il piè di pagina include un checksum CRC32 che verifica l’integrità dell’archivio. Segna anche la fine del flusso di dati compressi e può contenere informazioni aggiuntive come un indice di blocchi per un accesso rapido.
Metodi di compressione XZ
Il formato XZ si basa principalmente sull’algoritmo di compressione LZMA2, noto per il suo elevato rapporto di compressione e la ragionevole velocità di decompressione. Ecco uno sguardo più da vicino ai metodi di compressione associati a XZ:
- LZMA2: questo è il metodo di compressione predefinito e unico utilizzato dagli archivi XZ. LZMA2 si basa sull’algoritmo LZ77 e incorpora una codifica entropica avanzata, rendendolo altamente efficiente nella compressione di file di grandi dimensioni. Offre impostazioni di compressione regolabili, consentendo agli utenti di dare priorità alla velocità o al rapporto di compressione in base alle proprie esigenze.
- Filtri: oltre a LZMA2 , XZ supporta vari filtri opzionali che possono essere applicati prima della compressione per ridurre ulteriormente le dimensioni del file. Questi includono la codifica delta, utile per comprimere dati che presentano modifiche piccole e ripetute, e BCJ (Branch/Call/Jump), che ottimizza la compressione del codice eseguibile trasformando determinate istruzioni in forme più comprimibili.
- Checksum CRC32 e SHA-256: pur non essendo metodi di compressione di per sé, gli archivi XZ utilizzano checksum CRC32 per i controlli di integrità e, facoltativamente, supportano SHA-256 per una verifica avanzata dei dati, garantendo che i dati compressi non siano stati danneggiati o manomessi.
.xz Operazioni supportate
Aspose.Zip offre un supporto completo per lavorare con gli archivi .xz, semplificando la gestione dei file compressi. Ecco cosa puoi fare:
- Estrazione completa: estrai facilmente tutti i file da un archivio .xz, preservando l’integrità e la struttura del contenuto originale.
- Estrazione selettiva: mira a file specifici all’interno di un archivio .xz, consentendo il recupero preciso dei dati o la decompressione selettiva in base ai nomi dei file o ad altri criteri.
- Compressione dei dati: Crea archivi .xz da file e directory, utilizzando l’efficiente metodo di compressione LZMA2 per ridurre significativamente le dimensioni dei file.
- Impostazioni di compressione personalizzate: regola i livelli di compressione e altri parametri per bilanciare la velocità di compressione e le dimensioni del file, adattando il processo alle tue esigenze specifiche.
Struttura del file .XZ
Il formato file .xz viene utilizzato principalmente per la compressione e il confezionamento dei dati. Utilizza l’algoritmo LZMA2 per ottenere rapporti di compressione elevati. Ecco una panoramica della struttura di un archivio .xz:
Intestazione dello streaming:
- Magic Byte: i primi 6 byte (FD 37 7A 58 5A 00) identificano il file come archivio .xz.
- Flag di flusso: include dettagli come la dimensione del blocco e le opzioni di compressione.
Intestazione del blocco:
- Dimensione blocco: indica la dimensione del blocco che segue.
- Metodo di compressione: specifica l’algoritmo utilizzato (solitamente LZMA2).
- Catene di filtri: descrive in dettaglio eventuali filtri aggiuntivi applicati prima o dopo la compressione.
Blocchi di dati compressi:
- Dati: i dati effettivi compressi utilizzando l’algoritmo LZMA2.
- CRC32: un checksum utilizzato per verificare l’integrità dei dati compressi.
Sezione indice:
- Dati indice: fornisce gli offset per ciascun blocco e la dimensione non compressa, consentendo l’accesso casuale all’interno del flusso compresso.
- Indice CRC32: garantisce l’integrità della sezione indice.
Piè di pagina dello streaming:
- Flag di flusso: ripete i flag di flusso dall’intestazione a scopo di convalida.
- Dimensione all’indietro: la dimensione della sezione dell’indice, che consente l’attraversamento all’indietro del file.
- Magic Byte: il file termina con una sequenza di 2 byte (59 5A) per indicare la fine dell’archivio .xz.
Metadati facoltativi:
- Alcuni archivi .xz possono includere metadati aggiuntivi per caratteristiche speciali o funzionalità estese, come filtri personalizzati o crittografia.
Popolarità del formato XZ
Il formato file .xz ha guadagnato una notevole popolarità, in particolare nelle comunità Linux e open source, grazie al suo elevato rapporto di compressione e all’uso efficiente delle risorse. È ampiamente utilizzato per comprimere pacchetti software, distribuire codice sorgente e archiviare set di dati di grandi dimensioni. Il set di strumenti XZ Utils fornisce un solido supporto per la creazione, l’estrazione e la gestione di file .xz su varie piattaforme, tra cui Linux, macOS e Windows. Sebbene non sia ampiamente adottato negli ambienti Windows come ZIP o CAB , .xz è apprezzato per il suo equilibrio tra efficacia di compressione e prestazioni, che lo rende la scelta preferita per sviluppatori e amministratori di sistema. Inoltre, .xz è integrato in molti sistemi di gestione dei pacchetti, come APT di Debian e Pacman di Arch Linux, consolidando ulteriormente il suo ruolo nell’ecosistema di distribuzione del software.
Esempi di utilizzo degli archivi XZ
Questa sezione fornisce esempi di codice che dimostrano come comprimere e decomprimere gli archivi XZ utilizzando C# e Java. Questi esempi utilizzano librerie come Aspose.Zip per C# e la classe XzArchive incorporata (a seconda dell’ambiente Java) per interagire con i file XZ.
Compress XZ File via C#
using (FileStream xzFile = File.Open("data.bin.xz", FileMode.Create))
{
using (FileStream source = File.Open("data.bin", FileMode.Open, FileAccess.Read))
{
using (var archive = new XzArchive(Aspose.Zip.Xz.Settings.XzArchiveSettings.FastestSpeed))
{
archive.SetSource(source);
archive.Save(xzFile);
}
}
}
Open XZ Archive via C#
using (var archive = new XzArchive("data.bin.xz"))
{
archive.Extract("data.bin");
}
Compress XZ File via C#
try (FileOutputStream xzFile = new FileOutputStream("data.bin.xz")) {
try (FileInputStream source = new FileInputStream("data.bin")) {
try (XzArchive archive = new XzArchive(XzArchiveSettings.getFastestSpeed())) {
archive.setSource(source);
archive.save(xzFile);
}
}
} catch (IOException ex) {
}
Open XZ Archive via Java
try (XzArchive archive = new XzArchive("data.bin.xz")) {
archive.extract("data.bin");
}
Ulteriori informazioni
La gente se lo è chiesto
1. .xz è supportato su tutti i sistemi operativi?
Sebbene .xz sia più comunemente utilizzato negli ambienti Linux, è supportato su tutti i principali sistemi operativi. Strumenti come XZ Utils sono disponibili per Windows e macOS e supportano anche strumenti multipiattaforma come 7-Zip file .xz.
2. Quali sono i vantaggi dell’utilizzo dei file XZ?
I file XZ offrono numerosi vantaggi, tra cui rapporti di compressione elevati, uso efficiente delle risorse di sistema e compatibilità multipiattaforma. Sono comunemente utilizzati per l’archiviazione di set di dati di grandi dimensioni, la distribuzione di pacchetti software e il backup dei dati.
3. Posso comprimere più file in un singolo archivio .xz?
A differenza dei formati come ZIP o TAR , .xz viene generalmente utilizzato per comprimere un singolo file. Se desideri comprimere più file, devi prima archiviarli in un singolo file (utilizzando un’ API Aspose.Zip per creare un file .tar ) e quindi comprimere l’archivio utilizzando .xz, ottenendo un file .tar.xz.