Format archiwum XZ
XZ to format archiwum o wysokim stopniu kompresji, używany głównie do kompresji pojedynczych plików, oferujący doskonałą wydajność kompresji i zgodność z oprogramowaniem open source. Format ten, opracowany jako część pakietu XZ Utils, znany jest z zastosowania algorytmu kompresji LZMA2, który umożliwia osiągnięcie wysokich współczynników kompresji przy zachowaniu rozsądnych prędkości dekompresji. Archiwa XZ są szeroko stosowane w dystrybucji pakietów oprogramowania, zwłaszcza w systemach operacyjnych typu Unix, takich jak Linux.
Ogólne informacje o archiwum XZ
Archiwa XZ zostały zaprojektowane tak, aby zapewnić efektywną kompresję, ze szczególnym naciskiem na zmniejszenie rozmiaru plików do przechowywania i dystrybucji. Format wykorzystuje algorytm LZMA2, który łączy kompresję słownikową i kodowanie entropijne, dzięki czemu jest bardzo skuteczny w przypadku kompresji dużych plików. Archiwa XZ zazwyczaj zawierają pojedynczy skompresowany plik, ale można je połączyć z innymi narzędziami, takimi jak tar, w celu skompresowania całych katalogów. Format XZ jest często używany w dystrybucji oprogramowania, tworzeniu kopii zapasowych i archiwizacji danych, szczególnie w ekosystemie Linux, gdzie stał się standardem w pakowaniu oprogramowania i aktualizacji systemu.
Informacje o historii XZ
- 2005: Rozpoczęto rozwój formatu XZ w ramach projektu XZ Utils, którego celem było stworzenie wydajniejszego następcy starszego formatu LZMA.
- 2009: Oficjalna premiera XZ Utils, wprowadzająca format XZ jako nowy standard dla potrzeb wymagających wysokiej kompresji.
- 2010: XZ zaczął zyskiwać popularność w społeczności Linuksa, szybko stając się preferowanym formatem kompresji pakietów oprogramowania i archiwów systemowych.
- 2011: Główne dystrybucje Linuksa, w tym Debian i Arch Linux, zaczęły przyjmować XZ jako domyślny format kompresji dla swoich repozytoriów pakietów.
- 2014: Zastosowanie XZ rozszerzyło się poza Linuksa, stając się popularnym w wieloplatformowej dystrybucji oprogramowania, szczególnie w aplikacjach wymagających wysokich współczynników kompresji.
- 2020: XZ pozostaje szeroko stosowany w pakowaniu oprogramowania, przechowywaniu i dystrybucji danych, szczególnie w środowiskach, w których kluczowa jest wydajna kompresja.
Struktura archiwum XZ
Format archiwum XZ jest przeznaczony do kompresji pojedynczych plików i wykorzystuje prostą strukturę w celu osiągnięcia wysokich współczynników kompresji. Oto przegląd struktury archiwum XZ:
- Nagłówek: Nagłówek zawiera metadane dotyczące archiwum XZ, w tym wersję formatu, flagi i wszelkie użyte opcjonalne rozszerzenia. Wskazuje również na obecność sum kontrolnych integralności danych.
- Skompresowany strumień danych: Rdzeniem archiwum XZ jest skompresowany strumień danych. Ta sekcja zawiera rzeczywiste dane pliku, skompresowane przy użyciu algorytmu LZMA2. Strumień danych dzielony jest na bloki, co pozwala na efektywną kompresję i dekompresję. Każdy blok można niezależnie zdekompresować, co pomaga w odzyskaniu danych nawet w przypadku częściowego uszkodzenia archiwum.
- Stopka: W stopce znajduje się suma kontrolna CRC32 weryfikująca integralność archiwum. Oznacza także koniec skompresowanego strumienia danych i może zawierać dodatkowe informacje, takie jak indeks bloków, umożliwiający szybki dostęp.
Metody kompresji XZ
Format XZ opiera się przede wszystkim na algorytmie kompresji LZMA2, który jest znany z wysokiego współczynnika kompresji i rozsądnej szybkości dekompresji. Oto bliższe spojrzenie na metody kompresji związane z XZ:
- LZMA2: Jest to domyślna i jedyna metoda kompresji używana przez archiwa XZ. LZMA2 opiera się na algorytmie LZ77 i zawiera zaawansowane kodowanie entropijne, dzięki czemu jest bardzo wydajny w kompresji dużych plików. Oferuje regulowane ustawienia kompresji, dzięki czemu użytkownicy mogą ustalić priorytet szybkości lub współczynnika kompresji w zależności od potrzeb.
- Filtry: Oprócz LZMA2 , XZ obsługuje różne opcjonalne filtry, które można zastosować przed kompresją w celu dalszego zmniejszenia rozmiaru pliku. Należą do nich kodowanie delta, które jest przydatne do kompresji danych zawierających małe, powtarzające się zmiany, oraz BCJ (Branch/Call/Jump), które optymalizuje kompresję kodu wykonywalnego poprzez przekształcanie niektórych instrukcji w bardziej ściśliwe formy.
- Sumy kontrolne CRC32 i SHA-256: Archiwa XZ nie są same w sobie metodami kompresji, ale używają sum kontrolnych CRC32 do sprawdzania integralności i opcjonalnie obsługują SHA-256 w celu lepszej weryfikacji danych, zapewniając, że skompresowane dane nie zostały uszkodzone lub naruszone.
Obsługiwane operacje .xz
Aspose.Zip oferuje kompleksową obsługę pracy z archiwami .xz, ułatwiając zarządzanie skompresowanymi plikami. Oto, co możesz zrobić:
- Pełna ekstrakcja: Z łatwością wyodrębnij wszystkie pliki z archiwum .xz, zachowując integralność i strukturę oryginalnej zawartości.
- Wyodrębnianie selektywne: Celuje w określone pliki w archiwum .xz, umożliwiając precyzyjne odzyskiwanie danych lub selektywną dekompresję na podstawie nazw plików lub innych kryteriów.
- Kompresja danych: Twórz archiwa .xz z plików i katalogów, wykorzystując wydajną metodę kompresji LZMA2, aby znacznie zmniejszyć rozmiar plików.
- Niestandardowe ustawienia kompresji: Dostosuj poziomy kompresji i inne parametry, aby zrównoważyć prędkość kompresji i rozmiar pliku, dostosowując proces do konkretnych potrzeb.
Struktura pliku .XZ
Format pliku .xz jest używany głównie do kompresji i pakowania danych. Wykorzystuje algorytm LZMA2, aby osiągnąć wysoki stopień kompresji. Oto przegląd struktury archiwum .xz:
Nagłówek strumienia:
- Magic Bytes: Pierwsze 6 bajtów (FD 37 7A 58 5A 00) identyfikuje plik jako archiwum .xz.
- Flagi strumieniowe: zawierają szczegółowe informacje, takie jak rozmiar bloku i opcje kompresji.
Nagłówek bloku:
- Rozmiar bloku: Wskazuje rozmiar następnego bloku.
- Metoda kompresji: Określa używany algorytm (zwykle LZMA2).
- Łańcuchy filtrów: szczegółowe informacje na temat wszelkich dodatkowych filtrów zastosowanych przed lub po kompresji.
Skompresowane bloki danych:
- Dane: Rzeczywiste dane skompresowane przy użyciu algorytmu LZMA2.
- CRC32: Suma kontrolna używana do weryfikacji integralności skompresowanych danych.
Sekcja indeksu:
- Dane indeksowe: Zapewnia przesunięcia dla każdego bloku i rozmiar nieskompresowanego, umożliwiając swobodny dostęp w skompresowanym strumieniu.
- Indeks CRC32: Zapewnia integralność sekcji indeksu.
Stopka strumienia:
- Flagi strumienia: Powtarza flagi strumienia z nagłówka w celu sprawdzenia poprawności.
- Rozmiar wstecz: Rozmiar sekcji indeksu umożliwiający odwrotne przeglądanie pliku.
- Magic Bytes: plik kończy się 2-bajtową sekwencją (59 5A) oznaczającą koniec archiwum .xz.
Opcjonalne metadane:
- Niektóre archiwa .xz mogą zawierać dodatkowe metadane dotyczące funkcji specjalnych lub rozszerzonych, takich jak niestandardowe filtry lub szyfrowanie.
Popularność formatu XZ
Format pliku .xz zyskał znaczną popularność, szczególnie w społecznościach Linux i open source, ze względu na wysoki współczynnik kompresji i efektywne wykorzystanie zasobów. Jest szeroko stosowany do kompresji pakietów oprogramowania, dystrybucji kodu źródłowego i archiwizowania dużych zbiorów danych. Zestaw narzędzi XZ Utils zapewnia solidną obsługę tworzenia, wyodrębniania i zarządzania plikami .xz na różnych platformach, w tym Linux, macOS i Windows. Chociaż nie jest tak powszechnie stosowany w środowiskach Windows jak ZIP czy CAB , plik .xz jest doceniany ze względu na równowagę pomiędzy efektywnością kompresji a wydajnością, co czyni go preferowanym wyborem dla programistów i administratorów systemów. Ponadto plik .xz jest zintegrowany z wieloma systemami zarządzania pakietami, takimi jak APT Debiana i Pacman Arch Linux, co jeszcze bardziej umacnia jego rolę w ekosystemie dystrybucji oprogramowania.
Przykłady wykorzystania archiwów XZ
W tej sekcji przedstawiono przykłady kodu demonstrujące sposób kompresowania i dekompresowania archiwów XZ przy użyciu języków C# i Java. W tych przykładach wykorzystano biblioteki takie jak Aspose.Zip dla C# i wbudowaną klasę XzArchive (w zależności od środowiska Java) do interakcji z plikami 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");
}
Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:
![]() | ![]() | ![]() |
---|
Dodatkowe informacje
Ludzie pytali
1. Czy plik .xz jest obsługiwany we wszystkich systemach operacyjnych?
Chociaż plik .xz jest najczęściej używany w środowiskach Linux, jest obsługiwany we wszystkich głównych systemach operacyjnych. Narzędzia takie jak XZ Utils są dostępne dla systemów Windows i macOS, a narzędzia wieloplatformowe, takie jak 7-Zip również obsługują pliki .xz.
2. Jakie są zalety korzystania z plików XZ?
Pliki XZ oferują kilka zalet, w tym wysokie współczynniki kompresji, efektywne wykorzystanie zasobów systemowych i kompatybilność między platformami. Są powszechnie używane do archiwizacji dużych zbiorów danych, dystrybucji pakietów oprogramowania i tworzenia kopii zapasowych danych.
3. Czy mogę skompresować wiele plików w jedno archiwum .xz?
W przeciwieństwie do formatów takich jak ZIP lub TAR , .xz jest zwykle używany do kompresji pojedynczego pliku. Jeśli chcesz skompresować wiele plików, musisz najpierw zarchiwizować je w jednym pliku (używając Aspose.Zip API , aby utworzyć plik .tar ), a następnie skompresuj archiwum przy użyciu pliku .xz, w wyniku czego powstanie plik .tar.xz.