Formato archivio GZIP

GZIP è un formato di file popolare e un’applicazione software utilizzata per la compressione e decompressione dei file. È stato sviluppato come algoritmo di compressione gratuito e open source da Jean-Loup Gailly e Mark Adler all’inizio degli anni ‘90. Il nome “GZIP” sta per GNU ZIP, indicando la sua associazione con il progetto GNU.
La compressione GZIP funziona riducendo la dimensione dei file, facilitandone il trasferimento in rete o l’archiviazione su disco. Ottiene la compressione sostituendo stringhe ripetute di dati con riferimenti, riducendo così la ridondanza e la dimensione complessiva del file. GZIP è particolarmente efficiente per comprimere file basati su testo come HTML, CSS, JavaScript, XML e JSON, ma può essere utilizzato anche per comprimere altri tipi di file.

Informazioni sull'archivio GZIP

Le informazioni sull’archivio GZIP si riferiscono ai metadati e ai dati contenuti in un file compresso utilizzando l’algoritmo di compressione GZIP. Gli archivi GZIP includono in genere informazioni come attributi di file, timestamp, metodo di compressione e altri dati rilevanti necessari per la decompressione e il ripristino dei file. Questi metadati sono fondamentali per identificare ed elaborare correttamente i file compressi.
Inoltre, le informazioni sull’archivio GZIP possono includere anche dettagli sul processo di compressione stesso, come livello di compressione, checksum ed eventuali flag o opzioni aggiuntivi utilizzati durante la compressione. Queste informazioni sono essenziali per garantire l’integrità e la correttezza dei dati compressi durante la decompressione. Nel complesso, comprendere le informazioni dell’archivio GZIP è vitale per gestire e lavorare in modo efficace con i file compressi, sia per l’archiviazione dei dati, la trasmissione su reti o per scopi di archiviazione.

Evoluzione del formato di archivio GZIP

Il formato di archivio GZIP affonda le sue radici alla fine degli anni ‘80, quando Jean-loup Gailly e Mark Adler svilupparono l’algoritmo di compressione GZIP come parte del progetto GNU. GZIP sta per GNU ZIP, riflettendo le sue origini all’interno del progetto GNU. L’obiettivo era creare uno strumento di compressione in grado di ridurre in modo efficiente la dimensione dei file mantenendo la compatibilità tra diversi sistemi informatici.
Jean-loup Gailly e Mark Adler hanno sviluppato il programma come alternativa gratuita all’utilità di compressione presente nei primi sistemi Unix. È stato progettato per far parte del progetto GNU, da qui la “g” in gzip. La versione iniziale, la versione 0.1, divenne disponibile al pubblico il 31 ottobre 1992, seguita dalla versione 1.0 nel febbraio 1993.

Struttura GZIP

GZIP utilizza l’algoritmo DEFLATE, che unisce le tecniche di codifica LZ77 e Huffman. DEFLATE è stato sviluppato per sostituire LZW e altri algoritmi di compressione gravati da brevetti, che limitavano l’efficacia della compressione e di utilità di archiviazione simili prevalenti in quel momento. Il formato file GZIP segue una struttura ben definita composta da tre parti principali:

  • Intestazione (10 byte): Questa sezione fornisce informazioni essenziali sull’archivio e sui suoi contenuti. Ecco una ripartizione dei dati dell’intestazione
  • Numero magico (4 byte): identifica il file come archivio GZIP. Ha un valore esadecimale specifico (1f 8b) riconosciuto dagli strumenti di decompressione.
  • Metodo di compressione (1 byte): Questo byte contiene in genere il valore 8, che indica l’algoritmo di compressione DEFLATE utilizzato da GZIP.
  • Flag di intestazione (1 byte): questi flag controllano aspetti specifici della decompressione, come la codifica del nome del file o la presenza di un commento.
  • Ora di creazione (4 byte): questa sezione memorizza un timestamp Unix che indica l’ora di creazione dell’archivio.
  • CRC-32 (4 byte): questo valore di controllo della ridondanza ciclica viene utilizzato per il rilevamento degli errori durante la decompressione. Viene calcolato in base ai dati non compressi e consente al software di decompressione di verificare l’integrità dei file estratti.

Vantaggi di questo formato

  • Compressione senza perdita di dati: GZIP comprime i dati senza alcuna perdita di informazioni. A differenza di alcune tecniche di compressione, i file originali possono essere perfettamente ricostruiti dopo la decompressione. Ciò è fondamentale per documenti, immagini o codici importanti in cui il mantenimento dell’integrità dei dati è essenziale.
  • Ampia compatibilità: uno dei maggiori punti di forza di GZIP è la sua diffusa adozione. È supportato dalla maggior parte dei sistemi operativi, dalle utilità di archivio (WinRAR, 7-Zip) e dai server web. Ciò garantisce che tu possa aprire facilmente file GZIP su varie piattaforme senza bisogno di software specifico. Inoltre GZIP è ampiamente supportato su vari sistemi operativi, inclusi sistemi basati su Unix, Linux, Windows e macOS. Questa compatibilità multipiattaforma garantisce che i file compressi GZIP possano essere creati e decompressi senza problemi in ambienti diversi.
  • Compressione streaming: GZIP supporta la compressione streaming, consentendo di comprimere o decomprimere i file al volo senza dover attendere l’elaborazione dell’intero file. Ciò lo rende adatto a scenari in cui i dati vengono generati o trasmessi in modo continuo, come le comunicazioni di rete e le operazioni di backup dei dati.
  • Standard aperto: GZIP è uno standard aperto e ampiamente adottato per la compressione dei file, con specifiche disponibili pubblicamente. Questa apertura incoraggia l’interoperabilità e la compatibilità tra diverse applicazioni e sistemi software, favorendo un vivace ecosistema di strumenti e librerie per lavorare con file compressi GZIP. L’utilizzo di GZIP è generalmente semplice. Molti strumenti e software comprimono o decomprimono automaticamente i file in questo formato. Inoltre, il processo di decompressione è efficiente e richiede risorse minime.

Operazioni supportate dall'archivio GZIP

Aspose.ZIP consente all’utente di estrarre una voce particolare o l’intero archivio. Per Aspose.ZIP per .NET È possibile utilizzare GzipArchiveClass per aprire il file .gz e quindi scorrere le sue voci, estraendole nella posizione desiderata. Per Aspose.ZIP per Java Approccio simile utilizzando GzipArchive per aprire il file .gz ed estrarre le voci.

File GZIP - Struttura interna

L’archivio GZIP è come un pacchetto ben confezionato. Inizia con un’intestazione di 10 byte che introduce il formato e il metodo di compressione. Il cuore sta nella sezione dei dati compressi, rimpicciolita utilizzando algoritmi intelligenti. Infine, un piè di pagina da 8 byte verifica l’integrità dei dati con checksum, garantendo che i file arrivino in modo sicuro dopo la decompressione.

File GZIP - Struttura interna

Struttura dell'archivio interno

  • Metadati dei file: simile a un archivio tar, ogni file memorizza informazioni di base come l’ora della modifica e le autorizzazioni. Tuttavia, questa sezione è flessibile e consente di omettere o includere dettagli aggiuntivi come elenchi di controllo degli accessi (ACL) o attributi estesi (EA) in base alle proprie esigenze. Si consiglia di includere una funzione hash potente (come SHA1) per i file normali per garantire l’integrità dei dati.
  • Flussi di contenuto multipli - A differenza degli archivi tradizionali, i file possono avere più di un flusso di dati all’interno del file di dati interno. Ciò è utile per memorizzare attributi estesi o fork di risorse associati al file.
  • Intestazioni - Il file di indice interno contiene le intestazioni dei file, rispecchiando quelle sparse nel file di dati interno. Ma, se archiviate separatamente, le intestazioni dell’indice devono fare riferimento alla posizione iniziale dei dati corrispondenti all’interno del file di dati. Inoltre, le voci di directory nell’indice elencano i file contenuti e i relativi offset all’interno dell’indice dei file interni.
  • Motivazione per i metadati duplicati - Questa scelta di progettazione garantisce sia uno streaming/decodifica efficiente dei dati che un accesso casuale ai file. Inoltre, i metadati vengono compressi bene, con un conseguente sovraccarico di archiviazione minimo. I test mostrano che i metadati occupano in genere meno dello 0,3% dello spazio di archiviazione, rendendo utile il compromesso.
  • Intestazioni di blocco: le intestazioni di blocco, simili al file esterno, contengono informazioni sulla dimensione del blocco e una sequenza di identificatori univoci.

Esempi di utilizzo di GZIP

L’API Aspose.ZIP consente di estrarre archivi nelle tue applicazioni senza la necessità di altre applicazioni di terze parti. L’API Aspose.ZIP fornisce la classe GzipArchive per funzionare con gli archivi GZIP.

GZIP with compress only single source via C#

Such archives like GZIP, LZ, BZIP2, XZ, Z do not support entries and can compress only single source. See samples with such a compression.

    using (FileStream source = File.Open("alice29.txt", FileMode.Open, FileAccess.Read))
    {
        using (GzipArchive archive = new GzipArchive())
        {
            archive.SetSource(source);
            archive.Save(«archive.gz);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Ulteriori informazioni sugli archivi GZIP

La gente se lo è chiesto

1. Cos’è GZIP?

GZIP (archivio zippato GNU) è un formato di file popolare che riduce le dimensioni dei file per facilitarne l’archiviazione e la trasmissione.

2. Come si confronta la compressione GZIP con altri formati come ZIP?

GZIP offre in genere rapporti di compressione più elevati rispetto a ZIP, soprattutto quando si comprimono file basati su testo. Tuttavia, gli archivi ZIP spesso includono il supporto per più file e directory, rendendoli più versatili per il confezionamento di più file insieme .

3. GZIP può comprimere più file in un unico archivio?

GZIP è progettato per comprimere un singolo file, non più file o directory. Tuttavia, è comune utilizzare strumenti come tar in combinazione con GZIP per creare un tarball archivio tar e poi comprimerlo utilizzando GZIP per creare un singolo file compresso.