XZ-archiefformaat
XZ is een archiefformaat met hoge compressie dat voornamelijk wordt gebruikt voor het comprimeren van afzonderlijke bestanden, en biedt superieure compressie-efficiëntie en open-source-compatibiliteit. Dit formaat is ontwikkeld als onderdeel van de XZ Utils en staat bekend om het gebruik van het LZMA2-compressie-algoritme, dat hoge compressieverhoudingen bereikt terwijl redelijke decompressiesnelheden behouden blijven. XZ-archieven worden veel gebruikt bij de distributie van softwarepakketten, vooral in Unix-achtige besturingssystemen zoals Linux.
Algemene XZ-archiefinformatie
XZ-archieven zijn ontworpen om efficiënte compressie te bieden, waarbij de nadruk ligt op het verkleinen van de bestandsgrootte voor opslag en distributie. Het formaat maakt gebruik van het LZMA2-algoritme, dat woordenboekcompressie en entropiecodering combineert, waardoor het zeer effectief is voor het comprimeren van grote bestanden. XZ-archieven bevatten doorgaans één enkel gecomprimeerd bestand, maar ze kunnen worden gecombineerd met andere tools zoals tar om hele mappen te comprimeren. Het XZ-formaat wordt vaak gebruikt bij softwaredistributie, gegevensback-up en archivering, vooral in het Linux-ecosysteem, waar het een standaard is geworden voor het verpakken van software en systeemupdates.
XZ-geschiedenisinformatie
- 2005: De ontwikkeling van het XZ-formaat begon als onderdeel van het XZ Utils-project, dat tot doel had een efficiëntere opvolger van het oudere LZMA-formaat te creëren.
- 2009: XZ Utils worden officieel uitgebracht, waarbij het XZ-formaat wordt geïntroduceerd als een nieuwe standaard voor hoge compressiebehoeften.
- 2010: XZ begon aan populariteit te winnen in de Linux-gemeenschap en werd al snel het voorkeursformaat voor het comprimeren van softwarepakketten en systeemarchieven.
- 2011: Grote Linux-distributies, waaronder Debian en Arch Linux, begonnen XZ te gebruiken als het standaard compressieformaat voor hun pakketrepository’s.
- 2014: Het gebruik van XZ breidde zich uit tot buiten Linux en werd populair voor platformonafhankelijke softwaredistributie, vooral voor applicaties die hoge compressieverhoudingen vereisen.
- 2020: XZ blijft veel gebruikt in softwareverpakking, gegevensopslag en distributie, vooral in omgevingen waar efficiënte compressie van cruciaal belang is.
Structuur van XZ-archief
Het XZ-archiefformaat is ontworpen voor compressie van één bestand en gebruikt een eenvoudige structuur om hoge compressieverhoudingen te bereiken. Hier is een overzicht van de structuur van een XZ-archief:
- Koptekst: De koptekst bevat metagegevens over het XZ-archief, inclusief de formaatversie, vlaggen en eventuele gebruikte optionele extensies. Het geeft ook de aanwezigheid aan van controlesommen voor de gegevensintegriteit.
- Gecomprimeerde datastroom: De kern van het XZ-archief is de gecomprimeerde datastroom. Deze sectie bevat de daadwerkelijke bestandsgegevens, gecomprimeerd met behulp van het LZMA2-algoritme. De datastroom is verdeeld in blokken, waardoor efficiënte compressie en decompressie mogelijk is. Elk blok kan onafhankelijk worden gedecomprimeerd, wat helpt bij het herstellen van gegevens, zelfs als het archief gedeeltelijk beschadigd is.
- Voettekst: De voettekst bevat een CRC32-controlesom die de integriteit van het archief verifieert. Het markeert ook het einde van de gecomprimeerde datastroom en kan aanvullende informatie bevatten, zoals een index van blokken voor snelle toegang.
XZ-compressiemethoden
Het XZ-formaat is voornamelijk afhankelijk van het LZMA2-compressie-algoritme, dat bekend staat om zijn hoge compressieverhouding en redelijke decompressiesnelheid. Hier volgt een nadere blik op de compressiemethoden die verband houden met XZ:
- LZMA2: Dit is de standaard en enige compressiemethode die door XZ-archieven wordt gebruikt. LZMA2 bouwt voort op het LZ77-algoritme en bevat geavanceerde entropiecodering, waardoor het zeer efficiënt is bij het comprimeren van grote bestanden. Het biedt aanpasbare compressie-instellingen, waardoor gebruikers prioriteit kunnen geven aan de compressiesnelheid of -verhouding, afhankelijk van hun behoeften.
- Filters: Naast LZMA2 ondersteunt XZ verschillende optionele filters die vóór compressie kunnen worden toegepast om de bestandsgrootte verder te verkleinen. Deze omvatten delta-codering, wat handig is voor het comprimeren van gegevens met kleine, herhaalde wijzigingen, en BCJ (Branch/Call/Jump), dat de compressie van uitvoerbare code optimaliseert door bepaalde instructies om te zetten in meer samendrukbare vormen.
- CRC32- en SHA-256-controlesommen: Hoewel het niet per se compressiemethoden zijn, gebruiken XZ-archieven CRC32-controlesommen voor integriteitscontroles en ondersteunen ze optioneel SHA-256 voor verbeterde gegevensverificatie, zodat wordt gegarandeerd dat de gecomprimeerde gegevens niet zijn beschadigd of dat er mee is geknoeid.
.xz Ondersteunde bewerkingen
Aspose.Zip biedt uitgebreide ondersteuning voor het werken met .xz-archieven, waardoor het eenvoudiger wordt om gecomprimeerde bestanden te beheren. Dit is wat u kunt doen:
- Volledige extractie: Extraheer eenvoudig alle bestanden uit een .xz-archief, waarbij de integriteit en structuur van de originele inhoud behouden blijft.
- Selectieve extractie: Target specifieke bestanden binnen een .xz-archief, waardoor nauwkeurig gegevensherstel of selectieve decompressie mogelijk is op basis van bestandsnamen of andere criteria.
- Gegevenscompressie: Maak .xz-archieven van bestanden en mappen, met behulp van de efficiënte LZMA2-compressiemethode om de bestandsgrootte aanzienlijk te verkleinen.
- Aangepaste compressie-instellingen: Pas compressieniveaus en andere parameters aan om een evenwicht te vinden tussen compressiesnelheid en bestandsgrootte, zodat het proces wordt afgestemd op uw specifieke behoeften.
Structuur van .XZ-bestand
Het .xz-bestandsformaat wordt voornamelijk gebruikt voor het comprimeren en verpakken van gegevens. Het maakt gebruik van het LZMA2-algoritme om hoge compressieverhoudingen te bereiken. Hier is een overzicht van de structuur van een .xz-archief:
Streamkop:
- Magic Bytes: De eerste 6 bytes (FD 37 7A 58 5A 00) identificeren het bestand als een .xz-archief.
- Streamvlaggen: bevat details zoals de blokgrootte en compressie-opties.
Blokkop:
- Blokgrootte: geeft de grootte aan van het volgende blok.
- Compressiemethode: specificeert het gebruikte algoritme (meestal LZMA2).
- Filterketens: geeft details over eventuele extra filters die vóór of na compressie zijn toegepast.
Gecomprimeerde gegevensblokken:
- Gegevens: de feitelijke gegevens die zijn gecomprimeerd met behulp van het LZMA2-algoritme.
- CRC32: een controlesom die wordt gebruikt om de integriteit van de gecomprimeerde gegevens te verifiëren.
Indexsectie:
- Indexgegevens: biedt offsets voor elk blok en de niet-gecomprimeerde grootte, waardoor willekeurige toegang binnen de gecomprimeerde stream mogelijk is.
- Index CRC32: Garandeert de integriteit van de indexsectie.
Streamvoettekst:
- Streamvlaggen: herhaalt de streamvlaggen uit de header voor validatiedoeleinden.
- Achterwaartse grootte: de grootte van de indexsectie, waardoor omgekeerde doorloop van het bestand mogelijk is.
- Magic Bytes: het bestand eindigt met een reeks van 2 bytes (59 5A) om het einde van het .xz-archief aan te geven.
Optionele metadata:
- Sommige .xz-archieven kunnen aanvullende metagegevens bevatten voor speciale functies of uitgebreide functionaliteit, zoals aangepaste filters of codering.
Populariteit van het XZ-formaat
Het .xz-bestandsformaat is aanzienlijk populair geworden, vooral in de Linux- en open-sourcegemeenschappen, vanwege de hoge compressieverhouding en het efficiënte gebruik van bronnen. Het wordt veel gebruikt voor het comprimeren van softwarepakketten, het distribueren van broncode en het archiveren van grote datasets. De XZ Utils-toolset biedt robuuste ondersteuning voor het maken, extraheren en beheren van .xz-bestanden op verschillende platforms, waaronder Linux, macOS en Windows. Hoewel het in Windows-omgevingen niet zo algemeen wordt toegepast als ZIP of CAB , wordt .xz gewaardeerd vanwege de balans tussen compressie-effectiviteit en prestaties, waardoor het een voorkeurskeuze is voor ontwikkelaars en systeembeheerders. Bovendien is .xz geïntegreerd in veel pakketbeheersystemen, zoals Debian’s APT en Arch Linux’s Pacman, waardoor zijn rol in het softwaredistributie-ecosysteem verder wordt versterkt.
Voorbeelden van het gebruik van XZ-archieven
In deze sectie vindt u codevoorbeelden die demonstreren hoe u XZ-archieven kunt comprimeren en decomprimeren met C# en Java. Deze voorbeelden maken gebruik van bibliotheken zoals Aspose.Zip voor C# en de ingebouwde XzArchive-klasse (afhankelijk van de Java-omgeving) om te communiceren met XZ-bestanden.
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");
}
Aanvullende informatie
Mensen hebben ernaar gevraagd
1. Wordt .xz ondersteund op alle besturingssystemen?
Hoewel .xz het meest wordt gebruikt in Linux-omgevingen, wordt het ondersteund op alle belangrijke besturingssystemen. Tools zoals XZ Utils zijn beschikbaar voor Windows en macOS, en platformonafhankelijke tools zoals 7-Zip ondersteunen ook .xz-bestanden.
2. Wat zijn de voordelen van het gebruik van XZ-bestanden?
XZ-bestanden bieden verschillende voordelen, waaronder hoge compressieverhoudingen, efficiënt gebruik van systeembronnen en platformonafhankelijke compatibiliteit. Ze worden vaak gebruikt voor het archiveren van grote datasets, het distribueren van softwarepakketten en het maken van back-ups van gegevens.
3. Kan ik meerdere bestanden comprimeren tot één .xz-archief?
In tegenstelling tot formaten als ZIP of [TAR](/zip/nl/meest -common-archives/what-is-tar/), .xz wordt doorgaans gebruikt om één bestand te comprimeren. Als u meerdere bestanden wilt comprimeren, moet u ze eerst archiveren in één enkel bestand (met behulp van een Aspose.Zip API om een .tar-bestand te maken ) en comprimeer het archief vervolgens met .xz, wat resulteert in een .tar.xz-bestand.