PAX (Pre-Allocate eXtension) to otwartoźródłowy format skompresowanego archiwum opracowany przez Microsoft jako nowoczesna alternatywa dla istniejących formatów, takich jak ZIP, RAR i tar. Został zaprojektowany w celu rozwiązania ograniczeń i poprawy kompresji, wydajności, bezpieczeństwa i funkcjonalności obsługi archiwów w nowoczesnych systemach i urządzeniach.
Kluczowe cechy różniące format PAX obejmują ulepszoną kompresję przy użyciu nowoczesnych algorytmów, wydajny dostęp losowy do plików w archiwach, natywną obsługę wielowątkowości, rozszerzalne metadane, wbudowane szyfrowanie i sprawdzanie integralności oraz udokumentowaną otwartą specyfikację w celu zachęcenia do szerokiego przyjęcia i interoperacyjności.
Archiwa PAX używają rozszerzenia pliku .pax i mają wieloczęściową strukturę wewnętrzną składającą się z nagłówka, katalogu centralnego, skompresowanych bloków danych i stopki. Pozwala to na przechowywanie kluczowych informacji, takich jak zawartość archiwum, parametry kompresji i hasze integralności, oddzielnie od rzeczywistych skompresowanych danych pliku.
Nagłówek PAX zaczyna się od 4-bajtowego magicznego numeru (50 41 58 00 w szesnastkowym) w celu identyfikacji. Następnie zawiera pola dla wersji PAX, metody kompresji, metody szyfrowania, metody haszowania, rozmiaru bloku, liczby równoległych wątków kompresji i różnych flag. Nagłówek kończy się rozszerzalnymi metadanymi XML zawierającymi szczegóły dotyczące archiwum.
Po nagłówku znajduje się katalog centralny PAX. Zawiera on wpis dla każdego skompresowanego pliku/folderu w archiwum, przechowując pełną ścieżkę, atrybuty, rozmiary, przesunięcia bloków i hasze. Umieszczenie tego w jednym miejscu umożliwia wydajne wyświetlanie zawartości archiwum i losowy dostęp do poszczególnych plików bez skanowania skompresowanych danych.
Główna część archiwum PAX to seria skompresowanych bloków danych. Każdy blok ma mały nagłówek wskazujący nieskompresowany i skompresowany rozmiar, a następnie fragment danych pliku skompresowany za pomocą skonfigurowanego algorytmu. Domyślny rozmiar bloków to 1 MB, ale można go dostroić w nagłówku archiwum.
Skompresowane bloki danych są opcjonalnie szyfrowane, jeśli określono metodę szyfrowania. PAX obsługuje nowoczesne schematy szyfrowania, takie jak AES-256. Hasło archiwum jest używane do wygenerowania klucza, który szyfruje każdy blok niezależnie, umożliwiając wydajny dostęp losowy. W celu uwierzytelnienia PAX haszuje hasła za pomocą bezpiecznego KDF.
W celu kompresji PAX obsługuje różnorodne nowoczesne kodeki ogólnego przeznaczenia zoptymalizowane pod kątem szybkiej dekompresji: LZMA, LZ4, Brotli, Zstandard itp. Umożliwia również stosowanie preprocesorów w celu dalszej redukcji rozmiaru określonych typów plików (np. kodowanie Delta w plikach EXE/DLL, kodowanie E8E9 w kodzie x86). Kodeki i preprocesory są stosowane w potoku.
Aby umożliwić wydajną kompresję wielowątkową, pliki są dzielone na niezależnie skompresowane bloki, które mogą być przetwarzane przez równoległe wystąpienia kodeka. Kompresor PAX skaluje się automatycznie, aby wykorzystać wszystkie dostępne rdzenie procesora. Podobne partycjonowanie umożliwia równoległą dekompresję w celu szybszego wyodrębniania.
PAX zapewnia integralność danych i wykrywanie manipulacji poprzez przechowywanie haszy oryginalnych i skompresowanych danych. Archiwa zawierają hasz nagłówka w celu wykrycia obcięcia. Katalog centralny jest również haszowany, aby zapobiec manipulacji metadanymi pliku. Gnicie bitów w skompresowanych danych jest wykrywane przez haszowanie każdego bloku.
Na końcu archiwum PAX znajduje się stopka. Zawiera ona kopię pól nagłówka, przesunięcie/rozmiar katalogu centralnego i hasz całego archiwum. Stopka ma stały rozmiar i zawsze znajduje się na końcu pliku, co umożliwia łatwą lokalizację i weryfikację archiwów PAX.
Archiwa PAX można wydajnie aktualizować, modyfikując katalog centralny i dołączając zmienione bloki danych, zamiast przepisywać całe archiwa, jak w przypadku ZIP. Całe pliki można wstawiać, usuwać lub zastępować, aktualizując metadane i dodając/usuwając odpowiednie bloki. Archiwa można również szybko dołączać.
Aby złagodzić luki w zabezpieczeniach zip-slip, PAX wymaga jawnych ścieżek (bez przechodzenia ../) i zapobiega zapisywaniu poza katalogiem głównym ekstrakcji. Długie pola metadanych ZIP, które umożliwiały odmowę usługi, są ograniczone. Bomby kompresyjne są łagodzone poprzez limity współczynnika kompresji i użycia pamięci.
Znaczniki czasu plików w archiwach PAX używają standardowego 64-bitowego formatu obejmującego szeroki zakres dat z dokładnością do 1 sekundy. Obsługiwane są atrybuty uprawnień POSIX i list ACL systemu Windows. PAX może przechowywać alternatywne strumienie danych NTFS i rozwidlenia zasobów. Można również reprezentować dowiązania symboliczne i dowiązania twarde.
Otwartoźródłowy zestaw SDK PAX zapewnia proste interfejsy API do tworzenia, wyodrębniania, aktualizowania i weryfikowania archiwów PAX programowo. Obsługuje wszystkie szczegóły niskiego poziomu formatu PAX. Zestaw SDK jest dostępny w wielu językach, w tym C, C++, C#, Java, Python, JavaScript, Go i Rust.
Podsumowując, format archiwum PAX opiera się na fundamencie sprawdzonych formatów, takich jak ZIP, jednocześnie wprowadzając nowoczesne funkcje i optymalizacje - wydajną kompresję, wielowątkowość, dostęp losowy, bezpieczeństwo i otwartą specyfikację. Dzięki temu PAX jest idealny do szerokiego zakresu scenariuszy archiwizacji w dzisiejszych systemach.
Kompresja plików to proces, który redukuje rozmiar plików danych dla efektywnego przechowywania lub transmisji. Wykorzystuje różne algorytmy do kondensacji danych poprzez identyfikowanie i eliminowanie nadmiarowości, co często znacznie zmniejsza rozmiar danych bez utraty oryginalnej informacji.
Istnieją dwa główne typy kompresji plików: bezstratna i stratna. Kompresja bezstratna umożliwia doskonałą rekonstrukcję oryginalnych danych z skompresowanych danych, co jest idealne dla plików, gdzie każdy bit danych jest ważny, takich jak pliki tekstowe lub bazy danych. Powszechne przykłady obejmują formaty plików ZIP i RAR. Z drugiej strony, kompresja stratna eliminuje mniej ważne dane, aby bardziej znacząco zmniejszyć rozmiar pliku, często stosowana w plikach audio, wideo i obrazów. JPEG i MP3 to przykłady, gdzie pewna utrata danych nie wpływa znacząco na percepcyjną jakość treści.
Kompresja plików jest korzystna z wielu powodów. Oszczędza miejsce na urządzeniach i serwerach, obniża koszty i poprawia efektywność. Przyspiesza też przenoszenie plików przez sieci, w tym internet, co ma szczególne znaczenie dla dużych plików. Ponadto, skompresowane pliki mogą być grupowane razem w jeden plik archiwum, co pomaga w organizacji i łatwiejszym przenoszeniu wielu plików.
Jednak kompresja plików ma też pewne wady. Proces kompresji i dekompresji wymaga zasobów obliczeniowych, co może spowolnić wydajność systemu, szczególnie dla większych plików. Ponadto, w przypadku kompresji stratnej, niektóre oryginalne dane są tracone podczas kompresji, a jakość wynikowa może nie być akceptowalna dla wszystkich zastosowań, zwłaszcza profesjonalnych, które wymagają wysokiej jakości.
Kompresja plików to kluczowe narzędzie w dzisiejszym cyfrowym świecie. Poprawia efektywność, oszczędza miejsce na przechowywanie i skraca czasy pobierania i wysyłania. Jednak także ma swoje wady pod względem wydajności systemu i ryzyka degradacji jakości. Dlatego ważne jest mądre podejście do tych czynników, aby wybrać odpowiednią technikę kompresji dla konkretnych potrzeb danych.
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.