7z

Format pliku 7z
7zip archive icon.svg
Rozszerzenie nazwy pliku
.7z
Rodzaj mediów internetowych
aplikacja/x-7z-skompresowana
Jednolity identyfikator typu (UTI) org.7-zip.7-zip-archiwum
magiczny numer '7', 'z', 0xBC, 0xAF, 0x27, 0x1C
Ograniczenie rozmiaru 2 64 bajty (około 18 eksabajtów )
Opracowany przez Igor Pawłow
Pierwsze wydanie 1999 ; 24 lata temu ( 1999 )
Typ formatu Kompresja danych
Otwarty format ? Tak: Mniejsza ogólna licencja publiczna GNU / domena publiczna
Strona internetowa 7-zip .org

7z to skompresowany format pliku archiwum , który obsługuje kilka różnych algorytmów kompresji , szyfrowania i wstępnego przetwarzania danych. Format 7z początkowo pojawił się jako zaimplementowany przez 7-Zip . Program 7-Zip jest publicznie dostępny na warunkach GNU Lesser General Public License . LZMA SDK 4.62 został umieszczony w domenie publicznej w grudniu 2008. Najnowsza stabilna wersja 7-Zip i LZMA SDK to wersja 22.01.

Oficjalna, nieformalna specyfikacja formatu pliku 7z jest rozpowszechniana wraz z kodem źródłowym 7-Zip od 2015 roku. Specyfikację można znaleźć w formacie zwykłego tekstu w podkatalogu „doc” dystrybucji kodu źródłowego. Podejmowano dodatkowe próby napisania przez strony trzecie bardziej konkretnej dokumentacji na podstawie udostępnionego kodu.

Funkcje i ulepszenia

Format 7z zapewnia następujące główne funkcje:

  • Otwarta , modułowa architektura, która umożliwia łączenie dowolnej metody kompresji, konwersji lub szyfrowania.
  • Wysokie współczynniki kompresji (w zależności od zastosowanej metody kompresji).
  • Szyfrowanie AES -256 bitów .
  • Szyfrowanie Zip 2.0 (starsze).
  • Obsługa dużych plików (do około 16 eksbibajtów lub 264 bajtów ).
  • Nazwy plików Unicode .
  • Obsługa solidnej kompresji , w której wiele plików podobnego typu jest kompresowanych w jednym strumieniu, aby wykorzystać połączoną redundancję właściwą dla podobnych plików.
  • Kompresja i szyfrowanie nagłówków archiwów .
  • Obsługa archiwów wieloczęściowych: np. xxx.7z.001, xxx.7z.002, ... (zobacz elementy menu kontekstowego Podziel plik... , aby je utworzyć i Połącz pliki... , aby ponownie złożyć archiwum z zestaw wieloczęściowych plików składowych).
  • Obsługa niestandardowych bibliotek DLL wtyczek kodeków.

Otwarta architektura formatu umożliwia dodanie do standardu dodatkowych przyszłych metod kompresji.

Metody kompresji

Obecnie zdefiniowane są następujące metody kompresji:

  • LZMA - Odmiana algorytmu LZ77 , wykorzystująca przesuwany słownik o długości do 4 GB w celu eliminacji zduplikowanych ciągów. Po etapie LZ następuje kodowanie entropijne przy użyciu kodera zakresu opartego na łańcuchu Markowa i drzew binarnych .
  • LZMA2 – zmodyfikowana wersja LZMA zapewniająca lepszą obsługę wielowątkowości i mniejszą ekspansję nieskompresowanych danych.
  • Bzip2 - standardowy algorytm przekształcania Burrowsa-Wheelera . Bzip2 używa dwóch odwracalnych transformacji; BWT, a następnie Przejdź do przodu z kodowaniem Huffmana w celu zmniejszenia symboli (rzeczywisty element kompresji).
  • PPMd - PPMdH Dmitrija Shkarina z 2002 r. (PPMII (przewidywanie przez częściowe dopasowanie z dziedziczeniem informacji) i cPPMII (skomplikowane PPMII)) z niewielkimi zmianami: PPMII to ulepszona wersja algorytmu kompresji PPM z 1984 r. (przewidywanie przez częściowe dopasowanie ) .
  • DEFLATE – Standardowy algorytm oparty na 32 kB LZ77 i kodowaniu Huffmana . Deflate występuje w kilku formatach plików, w tym ZIP , gzip , PNG i PDF . 7-Zip zawiera stworzony od podstaw koder DEFLATE, który często przewyższa de facto standardową wersję zlib pod względem rozmiaru kompresji, ale kosztem użycia procesora.

Zestaw narzędzi do rekompresji o nazwie AdvanceCOMP zawiera kopię kodera DEFLATE z implementacji 7-Zip; tych narzędzi można często używać do dalszej kompresji rozmiaru istniejących gzip , ZIP , PNG lub MNG .

Filtry wstępnego przetwarzania

LZMA SDK jest dostarczany z dołączonymi preprocesorami BCJ i BCJ2 , dzięki czemu późniejsze etapy są w stanie osiągnąć większą kompresję: W przypadku procesorów x86 , ARM , PowerPC (PPC), IA-64 Itanium i ARM Thumb cele skoków są „normalizowane” przed kompresji poprzez zamianę pozycji względnej na wartości bezwzględne. W przypadku x86 oznacza to, że bliskie skoki, wywołania i skoki warunkowe (ale nie krótkie skoki i skoki warunkowe) są konwertowane z notacji w stylu języka maszynowego „skok o 1655 bajtów wstecz” na znormalizowaną notację w stylu „skok do adresu 5554”; wszystkie skoki do 5554, być może wspólny podprogram, są zatem kodowane identycznie, co czyni je bardziej ściśliwymi.

  • BCJ – Konwerter dla 32-bitowych plików wykonywalnych x86. Normalizuj adresy docelowe bliskich skoków i połączeń z odległości względnych do bezwzględnych miejsc docelowych.
  • BCJ2 – Preprocesor dla 32-bitowych plików wykonywalnych x86. BCJ2 jest ulepszeniem BCJ, dodając dodatkowe przetwarzanie instrukcji skoku/wywołania x86. Obiekty Near Jump, Near Call, warunkowe Near Jump są rozdzielane i kompresowane oddzielnie w innym strumieniu.
  • Kodowanie delta – filtr delta, podstawowy preprocesor danych multimedialnych.

Podobna wykonywalna technologia wstępnego przetwarzania jest zawarta w innym oprogramowaniu; kompresor RAR obsługuje kompresję przemieszczenia dla 32-bitowych plików wykonywalnych x86 i plików wykonywalnych IA-64, a kompresor plików wykonywalnych środowiska wykonawczego UPX obsługuje pracę z wartościami 16-bitowymi w plikach binarnych DOS .

Szyfrowanie

Format 7z obsługuje szyfrowanie algorytmem AES z kluczem 256-bitowym. Klucz jest generowany na podstawie hasła podanego przez użytkownika przy użyciu algorytmu opartego na funkcji skrótu SHA-256 . SHA-256 jest wykonywany 2 19 (524288) razy, co na wolnych komputerach powoduje znaczne opóźnienie przed rozpoczęciem kompresji lub wyodrębniania. Technika ta nazywana jest rozciąganiem klucza i służy do wyszukiwania metodą brute-force dla hasła trudniejszego. Obecne ataki oparte na GPU i niestandardowe ataki sprzętowe ograniczają skuteczność tej konkretnej metody rozciągania klucza, dlatego nadal ważne jest, aby wybrać silne hasło. Format 7z zapewnia opcję szyfrowania nazw plików archiwum 7z.

Ograniczenia

Format 7z nie przechowuje uprawnień do systemu plików (takich jak uprawnienia właściciela/grupy UNIX lub listy ACL NTFS ), a zatem może być nieodpowiedni do celów tworzenia kopii zapasowych/archiwalnych. Obejściem tego problemu w systemach typu UNIX jest konwersja danych do strumienia bitów tar przed kompresją za pomocą 7z. Ale warto zauważyć, że GNU tar (powszechne w wielu środowiskach UNIX) może również kompresować za pomocą algorytmu LZMA2 (" xz ") natywnie, bez użycia 7z, z użyciem przełącznika "-J". Wynikowe rozszerzenie pliku to ".tar.xz" lub ".txz", a nie ".tar.7z". Ta metoda kompresji została przyjęta z wieloma dystrybucjami do pakowania, takimi jak Arch, Debian (deb), Fedora (rpm) i Slackware (starszy format „lzma” jest mniej wydajny). kodowanie systemu plików, co oznacza, że ​​skompresowane nazwy plików tar mogą stać się nieczytelne, jeśli zostaną zdekompresowane na innym komputerze.

Format 7z nie pozwala na wyodrębnienie niektórych „uszkodzonych plików” - to znaczy (na przykład) jeśli ktoś ma pierwszy segment serii plików 7z, 7z nie może podać początku plików w archiwum - musi czekać, aż wszystkie pobierane są segmenty. Format 7z nie ma również zapisów odzyskiwania, co czyni go podatnym na degradację danych , chyba że jest używany w połączeniu z rozwiązaniami zewnętrznymi, takimi jak parchives lub w systemach plików z solidną korekcją błędów . Dla porównania, zip również nie mają funkcji odzyskiwania, podczas gdy rar format ma jeden.

Zobacz też

Dalsza lektura

Linki zewnętrzne