GZIP-arkivformat
GZIP är ett populärt filformat och program som används för filkomprimering och dekomprimering. Den utvecklades som en gratis komprimeringsalgoritm med öppen källkod av Jean-Loup Gailly och Mark Adler i början av 1990-talet. Namnet “GZIP” står för GNU ZIP, vilket indikerar dess koppling till GNU-projektet.
GZIP-komprimering fungerar genom att minska storleken på filer, vilket gör dem lättare att överföra över nätverk eller lagra på disk. Den uppnår komprimering genom att ersätta upprepade strängar av data med referenser, vilket minskar redundans och total filstorlek. GZIP är särskilt effektivt för att komprimera textbaserade filer som HTML, CSS, JavaScript, XML och JSON, men det kan också användas för att komprimera andra typer av filer.
Om GZIP-arkivinformation
GZIP-arkivinformation hänvisar till metadata och data som finns i en fil komprimerad med GZIP-komprimeringsalgoritmen. GZIP-arkiv innehåller vanligtvis information som filattribut, tidsstämplar, komprimeringsmetod och annan relevant data som är nödvändig för dekomprimering och filåterställning. Denna metadata är avgörande för att korrekt identifiera och bearbeta de komprimerade filerna.
Dessutom kan GZIP-arkivinformation också innehålla detaljer om själva komprimeringsprocessen, såsom komprimeringsnivå, kontrollsummor och eventuella ytterligare flaggor eller alternativ som används under komprimering. Denna information är väsentlig för att säkerställa integriteten och korrektheten hos den komprimerade datan när den dekomprimeras. Sammantaget är det viktigt att förstå GZIP-arkivinformation för att effektivt hantera och arbeta med komprimerade filer, oavsett om det är för datalagring, överföring över nätverk eller arkiveringsändamål.
Utveckling av GZIP-arkivformatet
GZIP-arkivformatet har sina rötter i slutet av 1980-talet när Jean-loup Gailly och Mark Adler utvecklade GZIP-komprimeringsalgoritmen som en del av GNU-projektet. GZIP står för GNU ZIP, vilket återspeglar dess ursprung inom GNU-projektet. Målet var att skapa ett komprimeringsverktyg som effektivt kunde minska storleken på filer och samtidigt bibehålla kompatibiliteten mellan olika datorsystem.
Jean-loup Gailly och Mark Adler utvecklade programmet som ett gratis alternativ till komprimeringsverktyget som finns i tidiga Unix-system. Det designades för att vara en del av GNU-projektet, därav “g” i gzip. Den första versionen, version 0.1, blev tillgänglig för allmänheten den 31 oktober 1992, följt av version 1.0 i februari 1993.
GZIP-struktur
GZIP använder DEFLATE-algoritmen, som kombinerar kodningstekniker för LZ77 och Huffman. DEFLATE utvecklades för att ersätta LZW och andra komprimeringsalgoritmer som omfattas av patent, vilket begränsade effektiviteten hos komprimering och liknande arkiveringsverktyg som var vanliga vid den tiden. GZIP-filformatet följer en väldefinierad struktur som består av tre huvuddelar:
- Rubrik (10 byte): Det här avsnittet ger viktig information om arkivet och dess innehåll. Här är en uppdelning av rubrikdata
- Magiskt nummer (4 byte): Detta identifierar filen som ett GZIP-arkiv. Den har ett specifikt hexadecimalt värde (1f 8b) som dekompressionsverktyg känner igen.
- Kompressionsmetod (1 byte): Denna byte har vanligtvis värdet 8, vilket indikerar DEFLATE-komprimeringsalgoritmen som används av GZIP.
- Rubrikflaggor (1 byte): Dessa flaggor styr specifika aspekter av dekomprimering, som filnamnskodning eller närvaron av en kommentar.
- Skapningstid (4 byte): Det här avsnittet lagrar en Unix-tidsstämpel som anger när arkivet skapades.
- CRC-32 (4 byte): Detta cykliska redundanskontrollvärde används för feldetektering under dekompression. Den beräknas baserat på okomprimerad data och låter dekomprimeringsprogrammet verifiera integriteten hos de extraherade filerna.
Fördelar med detta format
- Förlustfri komprimering: GZIP komprimerar data utan att förlora information. Till skillnad från vissa komprimeringstekniker kan originalfilerna rekonstrueras perfekt efter dekomprimering. Detta är avgörande för viktiga dokument, bilder eller kod där det är viktigt att upprätthålla dataintegritet.
- Bred kompatibilitet: En av GZIPs största styrkor är dess utbredda användning. Det stöds av de flesta operativsystem, arkivverktyg (WinRAR, 7-Zip) och webbservrar. Detta säkerställer att du enkelt kan öppna GZIP-filer på olika plattformar utan att behöva specifik programvara. GZIP stöds också brett över olika operativsystem, inklusive Unix-baserade system, Linux, Windows och macOS. Denna plattformsoberoende kompatibilitet säkerställer att GZIP-komprimerade filer kan skapas och dekomprimeras sömlöst i olika miljöer.
- Strömbar komprimering: GZIP stöder strömkomprimering, vilket gör att filer kan komprimeras eller dekomprimeras i farten utan att behöva vänta på att hela filen ska bearbetas. Detta gör den lämplig för scenarier där data genereras eller överförs kontinuerligt, såsom nätverkskommunikation och säkerhetskopiering av data.
- Öppen standard: GZIP är en öppen och allmänt antagen standard för filkomprimering, med specifikationer som är allmänt tillgängliga. Denna öppenhet uppmuntrar interoperabilitet och kompatibilitet mellan olika programvaruapplikationer och system, vilket främjar ett levande ekosystem av verktyg och bibliotek för att arbeta med GZIP-komprimerade filer. Att använda GZIP är i allmänhet okomplicerat. Många verktyg och programvara komprimerar eller dekomprimerar automatiskt filer i detta format. Dessutom är dekompressionsprocessen effektiv och kräver minimala resurser.
GZIP Archive Supported Operations
Aspose.ZIP tillåter användaren att extrahera antingen en viss post eller hela arkivet. För Aspose.ZIP för .NET Du kan använda GzipArchiveClass för att öppna .gz-filen och sedan iterera genom dess poster och extrahera dem till önskad plats. För Aspose.ZIP för Java Liknande tillvägagångssätt med GzipArchive för att öppna .gz-filen och extrahera poster.
GZIP-fil - intern struktur
GZIP-arkivet är som ett snyggt inslaget paket. Det börjar med en 10-byte header som introducerar formatet och komprimeringsmetoden. Hjärtat ligger i den komprimerade datasektionen, krympt med hjälp av smarta algoritmer. Slutligen, en 8-byte sidfot verifierar dataintegriteten med kontrollsummor, vilket säkerställer att dina filer kommer fram säkert efter dekomprimering.
Inre arkivstruktur
- Filmetadata - I likhet med ett tar-arkiv lagrar varje fil grundläggande information som ändringstid och behörigheter. Det här avsnittet är dock flexibelt och tillåter att utelämna eller inkludera ytterligare detaljer som åtkomstkontrollistor (ACL) eller utökade attribut (EA) baserat på dina behov. Det rekommenderas att inkludera en stark hash-funktion (som SHA1) för vanliga filer för att säkerställa dataintegritet.
- Flera innehållsströmmar - Till skillnad från traditionella arkiv kan filer ha mer än en dataström i den inre datafilen. Detta är användbart för att lagra utökade attribut eller resursgaffel som är associerade med filen.
- Rubriker - Den inre indexfilen innehåller filrubriker som speglar de som är utspridda i hela den inre datafilen. Men när de lagras separat måste indexrubrikerna referera till startpositionen för deras motsvarande data i datafilen. Dessutom listar katalogposter i indexet deras innehållna filer och deras motsvarande förskjutningar inom det inre filindexet.
- Rational för dubbletter av metadata - Detta designval säkerställer både effektiv dataströmning/avkodning och slumpmässig filåtkomst. Dessutom komprimeras metadata bra, vilket resulterar i minimal lagringskostnad. Tester visar att metadata vanligtvis upptar mindre än 0,3 % av lagringsutrymmet, vilket gör avvägningen värd besväret.
- Blockhuvuden - Blockhuvuden, liknande den yttre filen, innehåller information om blockstorlek och en unik identifierarsekvens.
Exempel på användning av GZIP
Aspose.ZIP API låter extrahera arkiv i dina applikationer utan att behöva några andra applikationer från tredje part. Aspose.ZIP API tillhandahåller GzipArchive-klass för att fungera med GZIP-arkiv.
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”);
}
}
Ytterligare information om GZIP-arkiv
Folk har frågat
1. Vad är GZIP?
GZIP (GNU zippad archive) är ett populärt filformat som krymper storleken på filer för enklare lagring och överföring.
2. Hur är GZIP-komprimering jämfört med andra format som ZIP?
GZIP erbjuder vanligtvis högre komprimeringsförhållanden jämfört med ZIP, särskilt när du komprimerar textbaserade filer. Men ZIP -arkiv innehåller ofta stöd för flera filer och kataloger, vilket gör dem mer mångsidiga för att paketera flera filer tillsammans .
3. Kan GZIP komprimera flera filer till ett enda arkiv?
GZIP är designat för att komprimera en enda fil, inte flera filer eller kataloger. Det är dock vanligt att använda verktyg som tar i kombination med GZIP för att skapa en tarball tar archive och sedan komprimera den med GZIP för att skapa en enda komprimerad fil.