GZIP-archiefformaat
GZIP is een populair bestandsformaat en softwareapplicatie die wordt gebruikt voor bestandscompressie en decompressie. Het werd begin jaren negentig ontwikkeld als een gratis en open-source compressie-algoritme door Jean-Loup Gailly en Mark Adler. De naam “GZIP” staat voor GNU ZIP, wat de associatie met het GNU-project aangeeft.
GZIP-compressie werkt door de grootte van bestanden te verkleinen, waardoor ze gemakkelijker via netwerken kunnen worden overgedragen of op schijf kunnen worden opgeslagen. Het bereikt compressie door herhaalde gegevensreeksen te vervangen door referenties, waardoor de redundantie en de algehele bestandsgrootte worden verminderd. GZIP is bijzonder efficiënt voor het comprimeren van op tekst gebaseerde bestanden zoals HTML, CSS, JavaScript, XML en JSON, maar het kan ook worden gebruikt voor het comprimeren van andere soorten bestanden.
Over GZIP-archiefinformatie
GZIP-archiefinformatie verwijst naar de metagegevens en gegevens in een bestand dat is gecomprimeerd met behulp van het GZIP-compressie-algoritme. GZIP-archieven bevatten doorgaans informatie zoals bestandskenmerken, tijdstempels, compressiemethode en andere relevante gegevens die nodig zijn voor decompressie en bestandsherstel. Deze metadata zijn cruciaal voor het correct identificeren en verwerken van de gecomprimeerde bestanden.
Bovendien kan GZIP-archiefinformatie ook details bevatten over het compressieproces zelf, zoals het compressieniveau, controlesommen en eventuele extra vlaggen of opties die tijdens de compressie worden gebruikt. Deze informatie is essentieel voor het garanderen van de integriteit en juistheid van de gecomprimeerde gegevens bij het decomprimeren ervan. Over het algemeen is het begrijpen van GZIP-archiefinformatie essentieel voor het effectief beheren en werken met gecomprimeerde bestanden, of het nu gaat om gegevensopslag, verzending via netwerken of archiveringsdoeleinden.
Evolutie van het GZIP-archiefformaat
Het GZIP-archiefformaat vindt zijn oorsprong in de late jaren tachtig, toen Jean-loup Gailly en Mark Adler het GZIP-compressie-algoritme ontwikkelden als onderdeel van het GNU-project. GZIP staat voor GNU ZIP en weerspiegelt de oorsprong ervan binnen het GNU-project. Het doel was om een compressietool te maken die de grootte van bestanden efficiënt kon verkleinen en tegelijkertijd de compatibiliteit tussen verschillende computersystemen kon behouden.
Jean-loup Gailly en Mark Adler ontwikkelden het programma als een gratis alternatief voor het compressiehulpprogramma dat te vinden was in vroege Unix-systemen. Het is ontworpen als onderdeel van het GNU-project, vandaar de g
in gzip. De eerste release, versie 0.1, werd op 31 oktober 1992 voor het publiek beschikbaar, gevolgd door versie 1.0 in februari 1993.
GZIP-structuur
GZIP maakt gebruik van het DEFLATE-algoritme, dat LZ77- en Huffman-coderingstechnieken combineert. DEFLATE is ontwikkeld om LZW en andere compressie-algoritmen te vervangen die bezwaard zijn door patenten, die de effectiviteit van compressie- en soortgelijke archiveringshulpmiddelen die in die tijd gangbaar waren, beperkten. Het GZIP-bestandsformaat volgt een goed gedefinieerde structuur die uit drie hoofdonderdelen bestaat:
- Header (10 bytes): Deze sectie biedt essentiële informatie over het archief en de inhoud ervan. Hier volgt een overzicht van de headergegevens
- Magisch getal (4 bytes): Dit identificeert het bestand als een GZIP-archief. Het heeft een specifieke hexadecimale waarde (1f 8b) die decompressietools herkennen.
- Compressiemethode (1 byte): Deze byte bevat doorgaans de waarde 8, wat het DEFLATE-compressie-algoritme aangeeft dat door GZIP wordt gebruikt.
- Headervlaggen (1 byte): Deze vlaggen controleren specifieke aspecten van de decompressie, zoals het coderen van bestandsnamen of de aanwezigheid van commentaar.
- Aanmaaktijd (4 bytes): In deze sectie wordt een Unix-tijdstempel opgeslagen die het tijdstip aangeeft waarop het archief is gemaakt.
- CRC-32 (4 bytes): Deze cyclische redundantiecontrolewaarde wordt gebruikt voor foutdetectie tijdens decompressie. Het wordt berekend op basis van de niet-gecomprimeerde gegevens en stelt de decomprimerende software in staat de integriteit van de uitgepakte bestanden te verifiëren.
Voordelen van dit formaat
- Verliesloze compressie: GZIP comprimeert gegevens zonder enig verlies van informatie. In tegenstelling tot sommige compressietechnieken kunnen de originele bestanden na decompressie perfect worden gereconstrueerd. Dit is cruciaal voor belangrijke documenten, afbeeldingen of code waarbij het behoud van de gegevensintegriteit essentieel is.
- Brede compatibiliteit: Een van de sterkste punten van GZIP is de wijdverbreide acceptatie ervan. Het wordt ondersteund door de meeste besturingssystemen, archiefhulpprogramma’s (WinRAR, 7-Zip) en webservers. Dit zorgt ervoor dat u gemakkelijk GZIP-bestanden op verschillende platforms kunt openen zonder dat u specifieke software nodig heeft. GZIP wordt ook breed ondersteund door verschillende besturingssystemen, waaronder Unix-gebaseerde systemen, Linux, Windows en macOS. Deze platformonafhankelijke compatibiliteit zorgt ervoor dat met GZIP gecomprimeerde bestanden naadloos in verschillende omgevingen kunnen worden gemaakt en gedecomprimeerd.
- Streambare compressie: GZIP ondersteunt streamcompressie, waardoor bestanden direct kunnen worden gecomprimeerd of gedecomprimeerd zonder dat u hoeft te wachten tot het hele bestand is verwerkt. Dit maakt het geschikt voor scenario’s waarin gegevens continu worden gegenereerd of verzonden, zoals netwerkcommunicatie en gegevensback-upbewerkingen.
- Open standaard: GZIP is een open en algemeen aanvaarde standaard voor bestandscompressie, waarvan de specificaties openbaar beschikbaar zijn. Deze openheid bevordert de interoperabiliteit en compatibiliteit tussen verschillende softwareapplicaties en -systemen, waardoor een levendig ecosysteem van tools en bibliotheken wordt bevorderd voor het werken met met GZIP gecomprimeerde bestanden. Het gebruik van GZIP is over het algemeen eenvoudig. Veel tools en software comprimeren of decomprimeren automatisch bestanden in dit formaat. Bovendien is het decompressieproces efficiënt en vereist het minimale middelen.
GZIP-archief ondersteunde bewerkingen
Met Aspose.ZIP kan de gebruiker een bepaald item of een heel archief uitpakken. Voor Aspose.ZIP voor .NET U kunt de GzipArchiveClass gebruiken om het .gz-bestand te openen en vervolgens de vermeldingen te doorlopen en ze uit te pakken naar een gewenste locatie. Voor Aspose.ZIP voor Java Soortgelijke aanpak met behulp van GzipArchive om het .gz-bestand te openen en items uit te pakken.
GZIP-bestand - Interne structuur
Het GZIP-archief is als een netjes ingepakt pakketje. Het begint met een header van 10 bytes waarin het formaat en de compressiemethode worden geïntroduceerd. Het hart ligt in het gecomprimeerde datagedeelte, verkleind met behulp van slimme algoritmen. Ten slotte verifieert een voettekst van 8 bytes de gegevensintegriteit met controlesommen, zodat uw bestanden na decompressie veilig aankomen.
Innerlijke archiefstructuur
- Bestandsmetagegevens - Net als bij een tar-archief slaat elk bestand basisinformatie op, zoals wijzigingstijd en machtigingen. Deze sectie is echter flexibel en maakt het mogelijk om aanvullende details zoals toegangscontrolelijsten (ACL’s) of uitgebreide attributen (EA’s) weg te laten of op te nemen, afhankelijk van uw behoeften. Het wordt aanbevolen om een sterke hash-functie (zoals SHA1) op te nemen voor gewone bestanden om de gegevensintegriteit te garanderen.
- Meerdere inhoudsstromen - In tegenstelling tot traditionele archieven kunnen bestanden meer dan één gegevensstroom binnen het interne gegevensbestand bevatten. Dit is handig voor het opslaan van uitgebreide attributen of bronvorken die aan het bestand zijn gekoppeld.
- Kopteksten - Het binnenste indexbestand bevat bestandskopteksten, die overeenkomen met de kopteksten die verspreid zijn over het binnenste gegevensbestand. Maar wanneer ze afzonderlijk worden opgeslagen, moeten de indexkoppen verwijzen naar de startpositie van hun overeenkomstige gegevens in het gegevensbestand. Bovendien vermelden directory-items in de index de daarin opgenomen bestanden en hun corresponderende offsets binnen de interne bestandsindex.
- Rationale voor dubbele metadata - Deze ontwerpkeuze garandeert zowel efficiënte gegevensstreaming/decodering als willekeurige toegang tot bestanden. Bovendien worden metadata goed gecomprimeerd, wat resulteert in minimale opslagoverhead. Uit tests blijkt dat metadata doorgaans minder dan 0,3% van de opslagruimte in beslag nemen, wat de afweging de moeite waard maakt.
- Blokheaders - Blokheaders bevatten, vergelijkbaar met het buitenste bestand, informatie over de blokgrootte en een unieke identificatiereeks.
Voorbeelden van het gebruik van GZIP
Met de Aspose.ZIP API kunt u archieven in uw applicaties extraheren zonder dat er andere applicaties van derden nodig zijn. Aspose.ZIP API biedt de GzipArchive-klasse om met GZIP-archieven te werken.
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”);
}
}
Aanvullende informatie over GZIP-archieven
Mensen hebben ernaar gevraagd
1. Wat is GZIP?
GZIP (GNU zipped archive) is een populair bestandsformaat dat de grootte van bestanden verkleint voor eenvoudiger opslag en verzending.
2. Hoe verhoudt GZIP-compressie zich tot andere formaten zoals ZIP?
GZIP biedt doorgaans hogere compressieverhoudingen vergeleken met ZIP, vooral bij het comprimeren van op tekst gebaseerde bestanden. ZIP archieven bevatten echter vaak ondersteuning voor meerdere bestanden en mappen, waardoor ze veelzijdiger worden voor het samenpakken van meerdere bestanden .
3. Kan GZIP meerdere bestanden comprimeren tot één archief?
GZIP is ontworpen om één enkel bestand te comprimeren, niet meerdere bestanden of mappen. Het is echter gebruikelijk om tools als tar te gebruiken in combinatie met GZIP om een tarball tar archief te maken en vervolgens comprimeer het met GZIP om één gecomprimeerd bestand te maken.