ZIPX to format pliku archiwum, który bazuje na szeroko stosowanym formacie ZIP i go rozszerza. Został opracowany przez PKWARE, tę samą firmę, która stworzyła oryginalny format ZIP, jako sposób na dodanie zaawansowanych funkcji kompresji i szyfrowania, przy jednoczesnym zachowaniu zgodności z istniejącymi narzędziami ZIP. ZIPX ma na celu zapewnienie lepszych współczynników kompresji, silniejszego zabezpieczenia i obsługi większych rozmiarów plików w porównaniu z tradycyjnymi archiwami ZIP.
Jedną z kluczowych funkcji ZIPX jest obsługa wielu metod kompresji. Oprócz standardowej kompresji DEFLATE stosowanej w plikach ZIP, ZIPX wprowadza kilka nowych algorytmów kompresji. Należą do nich BZIP2, wysokowydajna metoda kompresji znana ze swoich doskonałych współczynników kompresji, oraz PPMd, statystyczny algorytm kompresji oparty na kontekście, który może osiągnąć jeszcze lepsze wyniki kompresji. ZIPX obsługuje również metodę kompresji LZMA, która opiera się na algorytmie łańcucha Markowa Lempel-Ziv i oferuje dobry balans między współczynnikiem kompresji a szybkością.
Kolejnym znaczącym ulepszeniem w ZIPX jest wprowadzenie zaawansowanych możliwości szyfrowania. Podczas gdy pliki ZIP od dawna obsługują podstawową ochronę hasłem przy użyciu stosunkowo słabego algorytmu ZipCrypto, ZIPX podnosi poziom bezpieczeństwa, włączając silne metody szyfrowania. Obsługuje użycie AES (Advanced Encryption Standard) z długościami klucza 128, 192 lub 256 bitów. AES to szeroko akceptowany i bezpieczny algorytm szyfrowania, który zapewnia solidną ochronę przed nieautoryzowanym dostępem do zawartości archiwum.
ZIPX rozwiązuje również ograniczenia oryginalnego formatu ZIP pod względem rozmiaru pliku. Tradycyjne pliki ZIP używają pól 32-bitowych do przechowywania rozmiarów plików i przesunięć, co ogranicza maksymalny rozmiar pojedynczych plików i całego archiwum do 4 GB. Staje się to problemem w przypadku dużych plików lub kolekcji plików, które przekraczają ten limit. ZIPX przezwycięża to ograniczenie, wprowadzając rozszerzenia 64-bitowe, umożliwiając rozmiary plików i archiwów do 18 eksabajtów (około 18 milionów terabajtów). Dzięki temu ZIPX nadaje się do obsługi niezwykle dużych zestawów danych i dostosowania się do stale rosnącego rozmiaru plików cyfrowych.
Pod względem struktury formatu pliku ZIPX zachowuje zgodność z podstawowym formatem ZIP, jednocześnie wprowadzając nowe funkcje i rozszerzenia. Plik ZIPX składa się z sekwencji rekordów plików, z których każdy reprezentuje skompresowany plik lub katalog. Po rekordach plików następuje katalog centralny, który zawiera metadane dotyczące zarchiwizowanych plików, takie jak ich nazwy, rozmiary i metody kompresji. ZIPX wprowadza nowe typy rekordów i pola dodatkowe, aby pomieścić swoje zaawansowane funkcje.
Jednym z nowych typów rekordów w ZIPX jest rekord „Pole dodatkowe”. Ten rekord umożliwia dołączenie dodatkowych metadanych specyficznych dla ZIPX, takich jak wybrana metoda kompresji, algorytm szyfrowania i wszelkie inne istotne informacje. Pola dodatkowe są identyfikowane przez unikalne identyfikatory nagłówka i mogą być łatwo parsowane przez oprogramowanie obsługujące ZIPX.
ZIPX wprowadza również nową funkcję „Podzielone archiwum”, która umożliwia podzielenie dużych archiwów na mniejsze, bardziej poręczne części. Jest to szczególnie przydatne podczas przesyłania dużych plików ZIPX przez sieci lub nośniki pamięci z ograniczeniami rozmiaru. Funkcja podzielonego archiwum umożliwia tworzenie wielu plików ZIPX, które można ze sobą połączyć, aby odtworzyć oryginalne archiwum. Każdy podzielony plik zawiera specjalny nagłówek wskazujący jego pozycję w sekwencji i całkowitą liczbę części.
Zgodność jest ważnym czynnikiem, jeśli chodzi o formaty archiwów. Podczas gdy ZIPX oferuje zaawansowane funkcje i ulepszenia w stosunku do tradycyjnego formatu ZIP, zachowuje wsteczną zgodność do pewnego stopnia. Pliki ZIPX nadal mogą być otwierane i wyodrębniane przez wiele istniejących narzędzi ZIP, chociaż mogą nie obsługiwać wszystkich zaawansowanych funkcji. Jednak aby w pełni wykorzystać możliwości ZIPX, takie jak ulepszona kompresja i silne szyfrowanie, wymagane jest specjalistyczne oprogramowanie obsługujące ZIPX.
PKWARE udostępnia zestaw narzędzi i bibliotek, znanych jako „PKZIP SDK”, aby ułatwić tworzenie i manipulowanie plikami ZIPX. SDK zawiera narzędzia wiersza poleceń do kompresji i wyodrębniania archiwów ZIPX, a także interfejsy API i biblioteki do integracji obsługi ZIPX z niestandardowymi aplikacjami. Te narzędzia obsługują różne języki programowania i platformy, ułatwiając programistom pracę z ZIPX w ich projektach oprogramowania.
Wprowadzenie ZIPX przynosi wiele korzyści użytkownikom i organizacjom zajmującym się dużymi ilościami danych. Ulepszone metody kompresji w ZIPX skutkują mniejszymi rozmiarami plików, zmniejszając wymagania dotyczące pamięci masowej i ułatwiając szybszy transfer danych przez sieci. Silne możliwości szyfrowania zapewniają poufność i integralność poufnych informacji przechowywanych w archiwach ZIPX. Ponadto możliwość obsługi dużych rozmiarów plików eliminuje potrzebę uciążliwych obejść i umożliwia wydajne archiwizowanie i dystrybucję ogromnych zestawów danych.
Pomimo swoich zalet, przyjęcie ZIPX było stosunkowo powolne w porównaniu z wszechobecnym formatem ZIP. Można to przypisać powszechnemu wsparciu i znajomości ZIP, a także faktowi, że wielu użytkowników może nie potrzebować zaawansowanych funkcji oferowanych przez ZIPX. Jednak w miarę jak wolumeny danych rosną, a bezpieczeństwo staje się coraz bardziej krytyczne, zapotrzebowanie na bardziej wydajne formaty archiwów, takie jak ZIPX, prawdopodobnie wzrośnie.
Podsumowując, ZIPX to wydajny i bogaty w funkcje format pliku archiwum, który opiera się na spuściźnie formatu ZIP. Dzięki obsłudze zaawansowanych metod kompresji, silnego szyfrowania i dużych rozmiarów plików, ZIPX oferuje znaczące ulepszenia w stosunku do tradycyjnych archiwów ZIP. Podczas gdy zgodność z istniejącymi narzędziami ZIP jest zachowana do pewnego stopnia, pełny potencjał ZIPX jest odblokowywany poprzez użycie specjalistycznego oprogramowania i bibliotek. W miarę ewolucji wymagań dotyczących przechowywania i przesyłania danych, ZIPX stanowi cenne narzędzie do wydajnego i bezpiecznego archiwizowania w różnych dziedzinach, od komputerów osobistych po zarządzanie danymi przedsiębiorstw.
Kompresja plików redukuje redundancję, dzięki czemu te same informacje wymagają mniej bitów. Górna granica jest wyznaczana przez teorię informacji: dla kompresji bezstratnej limitem jest entropia źródła (zobacz teoremę kodowania źródła Shannona source coding theorem oraz jego oryginalny artykuł z 1948 roku „A Mathematical Theory of Communication”). W kompresji stratnej kompromis między przepływnością a jakością opisuje teoria rate–distortion.
Większość kompresorów działa w dwóch etapach. Najpierw model przewiduje lub ujawnia strukturę danych. Następnie koder zamienia te przewidywania w niemal optymalne wzorce bitowe. Klasyczną rodziną modeli jest Lempel–Ziv LZ77 (1977) i LZ78 (1978) wykrywają powtarzające się podciągi i zamiast surowych bajtów emitują odwołania. Po stronie kodowania kodowanie Huffmana (zob. artykuł z 1952 r.) przypisuje krótsze kody symbolom bardziej prawdopodobnym. Kodowanie arytmetyczne i range coding są jeszcze precyzyjniejsze i zbliżają się do granicy entropii, a nowoczesne Asymmetric Numeral Systems (ANS) osiągają podobne wyniki dzięki szybkim implementacjom tablicowym.
DEFLATE (wykorzystywane przez gzip, zlib i ZIP) łączy LZ77 z kodowaniem Huffmana. Specyfikacje są publiczne: DEFLATE RFC 1951, wrapper zlib RFC 1950i format gzip RFC 1952. Gzip jest przeznaczony do strumieniowania i wprost nie oferuje dostępu losowego. Obrazy PNG standaryzują DEFLATE jako jedyną metodę kompresji (maks. okno 32 KiB) zgodnie ze specyfikacją „Compression method 0… deflate/inflate… at most 32768 bytes” oraz W3C/ISO PNG 2nd Edition.
Zstandard (zstd): nowszy uniwersalny kompresor zaprojektowany dla wysokich współczynników i bardzo szybkiej dekompresji. Format opisano w RFC 8878 (oraz lustrze HTML) i w specyfikacji referencyjnej na GitHubie. Podobnie jak gzip, podstawowa ramka nie celuje w dostęp losowy. Jednym z supermocy zstd są słowniki: niewielkie próbki z korpusu, które dramatycznie poprawiają kompresję wielu małych lub podobnych plików (zob.dokumentację słowników python-zstandard i przykład Nigela Tao). Implementacje akceptują zarówno słowniki „unstructured”, jak i „structured” (dyskusja).
Brotli: zoptymalizowane pod kątem treści webowych (np. fonty WOFF2, HTTP). Łączy statyczny słownik z jądrem LZ+entropia podobnym do DEFLATE. Specyfikacja to RFC 7932, które opisuje też okno 2WBITS−16 z WBITS w [10, 24] (1 KiB−16 B do 16 MiB−16 B) i stwierdza, że nie zapewnia dostępu losowego. Brotli często pokonuje gzip na tekstach webowych, jednocześnie szybko dekodując.
Kontener ZIP: ZIP to archiwum plików, które może przechowywać wpisy z różnymi metodami kompresji (deflate, store, zstd itd.). De facto standardem jest APPNOTE PKWARE (zob.portal APPNOTE, hostowaną kopięoraz omówienia LC ZIP File Format (PKWARE) / ZIP 6.3.3).
LZ4 celuje w surową szybkość przy umiarkowanych współczynnikach. Zobacz stronę projektu („extremely fast compression”) oraz opis formatu ramek. Idealne do cache w pamięci, telemetrii lub wrażliwych ścieżek, gdzie dekompresja musi być prawie tak szybka jak RAM.
XZ / LZMA goni za wysoką gęstością (świetnymi współczynnikami) kosztem wolniejszej kompresji. XZ to kontener; ciężar pracy wykonują zwykle LZMA/LZMA2 (modelowanie podobne do LZ77 + range coding). Zobacz format .xz, specyfikację LZMA (Pavlov)oraz notatki jądra Linux o XZ Embedded. XZ zwykle kompresuje lepiej niż gzip i często konkuruje z nowoczesnymi kodekami wysokiego współczynnika, ale wymaga dłuższego kodowania.
bzip2 stosuje Transformację Burrowsa–Wheelera (BWT), move-to-front, RLE i kodowanie Huffmana. Zwykle daje mniejsze pliki niż gzip, ale działa wolniej; zobacz oficjalny podręcznik oraz stronę man (Linux).
Liczy się „rozmiar okna”. Odwołania w DEFLATE mogą sięgać tylko 32 KiB wstecz (RFC 1951) oraz limitu PNG 32 KiB opisanego tutaj. Brotli ma okno od ~1 KiB do 16 MiB (RFC 7932). Zstd dostraja okno i głębokość wyszukiwania poziomami (RFC 8878). Podstawowe strumienie gzip/zstd/brotli są projektowane do sekwencyjnego dekodowania; same formaty nie gwarantują dostępu losowego, choć kontenery (np. indeksy tar, ramek chunked lub indeksy specyficzne dla formatu) mogą go dodać.
Powyższe formaty są bezstratne: odtwarzają dokładnie te same bajty. Kodeki multimedialne często są stratne: odrzucają niewidoczne szczegóły, by osiągnąć niższe bitrate’y. W obrazach klasyczny JPEG (DCT, kwantyzacja, kodowanie entropijne) jest standaryzowany w ITU-T T.81 / ISO/IEC 10918-1. W audio MP3 (MPEG-1 Layer III) i AAC (MPEG-2/4) używają modeli percepcyjnych i transformacji MDCT (zob.ISO/IEC 11172-3, ISO/IEC 13818-7i przegląd MDCT tutaj). Metody stratne i bezstratne mogą współistnieć (np. PNG do UI, kodeki webowe dla obrazów/wideo/audio).
Teoria Shannon 1948 · Rate–distortion · Kodowanie Huffman 1952 · Kodowanie arytmetyczne · Range coding · ANS. Format DEFLATE · zlib · gzip · Zstandard · Brotli · LZ4 frame · Format XZ. Stos BWT Burrows–Wheeler (1994) · podręcznik bzip2. Media JPEG T.81 · MP3 ISO/IEC 11172-3 · AAC ISO/IEC 13818-7 · MDCT.
Podsumowanie: wybierz kompresor dopasowany do danych i ograniczeń, mierz na prawdziwych próbkach i nie zapominaj o zyskach ze słowników oraz sprytnego ramek. Z odpowiednią parą uzyskasz mniejsze pliki, szybsze transfery i żwawsze aplikacje bez poświęcania poprawności czy przenośności.
Kompresja plików to proces, który zmniejsza rozmiar pliku lub plików, zazwyczaj w celu oszczędności miejsca na dysku lub przyspieszenia transmisji przez sieć.
Kompresja plików działa poprzez identyfikowanie i usuwanie nadmiarowej informacji w danych. Wykorzystuje algorytmy do kodowania oryginalnych danych w mniejszej przestrzeni.
Dwa główne typy kompresji plików to kompresja bezstratna i stratna. Kompresja bezstratna pozwala na idealne przywrócenie oryginalnego pliku, podczas gdy kompresja stratna umożliwia znaczniejsze zmniejszenie rozmiaru kosztem pewnej utraty jakości danych.
Popularnym przykładem narzędzia do kompresji plików jest WinZip, który obsługuje wiele formatów kompresji, w tym ZIP i RAR.
W przypadku kompresji bezstratnej, jakość pozostaje niezmieniona. Jednak przy kompresji stratnej może dojść do zauważalnego spadku jakości, ponieważ eliminuje ona mniej ważne dane, aby bardziej znacząco zmniejszyć rozmiar pliku.
Tak, kompresja plików jest bezpieczna pod względem integralności danych, zwłaszcza przy kompresji bezstratnej. Jednak, jak wszystkie pliki, skompresowane pliki mogą być celem dla złośliwego oprogramowania lub wirusów, dlatego zawsze ważne jest, aby mieć zainstalowane wiarygodne oprogramowanie zabezpieczające.
Prawie wszystkie typy plików można skompresować, w tym pliki tekstowe, obrazy, audio, wideo i pliki oprogramowania. Jednak poziom możliwej do osiągnięcia kompresji może znacznie różnić się w zależności od typu pliku.
Plik ZIP to typ formatu pliku, który wykorzystuje kompresję bezstratną do zmniejszenia rozmiaru jednego lub więcej plików. Wiele plików w pliku ZIP jest efektywnie grupowanych razem w jeden plik, co ułatwia również udostępnianie.
Technicznie tak, chociaż dodatkowe zmniejszenie rozmiaru może być minimalne lub nawet niekorzystne. Kompresowanie już skompresowanego pliku czasami może zwiększyć jego rozmiar z powodu metadanych dodawanych przez algorytm kompresji.
Aby rozpakować plik, zazwyczaj potrzebujesz narzędzia do dekompresji lub rozpakowywania, takiego jak WinZip czy 7-Zip. Te narzędzia mogą wyodrębnić oryginalne pliki z formatu skompresowanego.