Trzy tryby, jedna decyzja
Lightning dla szybkości, Balanced na środek, Compact dla rozmiaru. Panel mówi wprost, który jest najszybszy, a który daje najmniejsze archiwum, zamiast ukrywać to za liczbą od 1 do 9.
Ta strona nie jest jeszcze przetłumaczona na Polski, więc wyświetla się po angielsku. Sam program jest przetłumaczony na Polski w całości.
Funkcje
To, co naprawdę zbudowane, przetestowane i działające. Rzeczy niedokończone są na tej stronie wymienione z nazwy, a nie przemilczane.
Lightning dla szybkości, Balanced na środek, Compact dla rozmiaru. Panel mówi wprost, który jest najszybszy, a który daje najmniejsze archiwum, zamiast ukrywać to za liczbą od 1 do 9.
Wyszukiwarka dopasowań, kanoniczny etap Huffmana i dwupoziomowa tablica dekodowania — wszystko we własnym kodzie tego projektu. Do programu nie dolinkowano żadnej zewnętrznej biblioteki kompresji.
Bloki pakowane są równolegle na tylu procesorach, na ile pozwolisz, w granicach limitu pamięci ustawionego w ustawieniach. Przy niższym limicie zadanie i tak się skończy; po prostu mniej się nakłada.
Kolejne wersje jednego dokumentu, eksporty o tym samym schemacie, dzienniki w jednym formacie: słownik zbudowany na nich wszystkich dał zmierzone 16,7% archiwum, jakie te same pliki tworzą bez niego. Domyślnie wyłączony, bo w folderze z różnymi rzeczami nic nie daje.
.jab to format własny: zapisywany najszybciej, z sumami kontrolnymi na blok i jako jedyny z trzech potrafi tu nieść hasło. .zip i .7z zapisywane są zwyczajnie, żeby każde inne narzędzie otworzyło je bez zastrzeżeń.
Store i deflate dla ZIP, foldery LZMA2 dla 7z wraz z filtrem skoków x86 przy odczycie, ustar z długimi nazwami GNU dla tar.
Zapisany tutaj .zip nie ma AES, rozszerzonych znaczników czasu ani uprawnień uniksowych. .7z ma jeden folder LZMA2 na blok solidny i żadnych filtrów per plik. Jeśli potrzebna jest lepsza kompresja, SHA-256 na blok albo hasło, odpowiedzią jest .jab.
Jeden rekord na blok, 96-bitowa jednorazowa wartość i 128-bitowy znacznik, z implementacji samego systemu operacyjnego. W tym projekcie nie wymyśla się kryptografii.
Manifest — nazwy plików, rozmiary, znaczniki czasu, atrybuty — to jeden zaszyfrowany rekord, podobnie jak tablica bloków z wartościami SHA-256 i CRC-32C każdego bloku.
Znacznik liczony na pustym tekście jawnym mówi czytającemu, że hasło jest złe, po jednym wyprowadzeniu PBKDF2, a nie dopiero po zdekodowaniu całego archiwum.
Zarezerwuj od 1 do 30% danych zapasowych wewnątrz .jab, a uszkodzony blok da się odbudować, a nie tylko zgłosić. Muszą zostać dodane przed uszkodzeniem i tylko .jab potrafi je nieść.
Każdy blok niesie CRC-32C; SHA-256 na blok jest włączone, dopóki tego nie wyłączysz. Pierwsze mówi, że blok jest zły, drugie sprawia, że ciche przeoczenie staje się znikomo prawdopodobne.
Sprawdzenie dokładne czyta nagłówek, stopkę, tablicę bloków i manifest pod kątem spójności, a potem dekoduje każdy blok. Samo dekodowanie pomija przebieg strukturalny. Żadne z nich nie zapisuje pliku.
Żadne sprawdzenie nie powie, że archiwum nie zostało podmienione: kto może zmienić dane, może przeliczyć obie wartości. Na to pytanie odpowiada tylko archiwum chronione hasłem.
Archiwum zapisywane jest do pliku .partial i dopiero po skompletowaniu zmienia nazwę, więc przerwane uruchomienie nigdy nie zostawi czegoś, co wygląda na gotowe.
Zapisuje .001, .002, … obok archiwum, po 10, 25, 100 albo 700 MB, lub w dowolnym wpisanym rozmiarze. Części same z siebie nie są czytelne; przy łączeniu każda część jest sprawdzana przed zapisem.
Porównuje całe pliki przez SHA-256 wewnątrz archiwum, więc zgłaszane są wyłącznie dokładne kopie, i podaje, ile miejsca odzyskałoby usunięcie nadmiarowych. Puste pliki są pomijane.
Sprawdza, czy folder nadal odpowiada temu, co zarchiwizowano. Obie strony są skracane funkcją skrótu, więc wykryta zostaje też zmiana, która zachowała ten sam rozmiar i znacznik czasu.
Skanowanie zgłasza, które odłamki są uszkodzone, i nic nie zapisuje. Naprawa przepisuje dokładnie te części, które są złe, korzystając z danych naprawczych.
Żadnego widoku webowego ani frameworka: interfejs rysują Direct2D i DirectWrite, dlatego uruchamia się natychmiast i pozostaje responsywny w czasie trwania zadania.
Otwórz archiwum, posortuj i przefiltruj zawartość, a tekst, obrazy, PDF — jedną stronę — i dźwięk obejrzyj bez wcześniejszego rozpakowywania.
Zadania wykonują się po kolei, w kolejności dodania. Zadanie czekające można przestawić albo usunąć, trwające wstrzymać, a długie przenieść w tło, zamiast blokować okno.
Znajdź archiwum po nazwie, a potem naciśnij Enter, żeby zajrzeć do znalezionych. Program wprost mówi, ile odczytał, ilu brakowało i ilu nie udało się otworzyć.
Pozycje menu podręcznego do pakowania, rozpakowywania i testowania, dodawane z ekranu ustawień i usuwane w tym samym miejscu.
Każdy napis w interfejsie przetłumaczono na 28 języków, z regułami liczby mnogiej właściwymi dla każdego języka, a nie jedną angielską regułą narzuconą wszystkim.
Ten sam silnik, nadający się do skryptów. Tworzenie, rozpakowywanie, listowanie, testowanie i weryfikacja, z liczbą wątków, budżetem pamięci i poziomem spójności jako przełącznikami. Hasło nigdy nie jest przyjmowane jako argument — pełny wiersz poleceń działającego procesu mogą odczytać inne procesy tego samego konta — więc czytane jest ze standardowego wejścia albo pytane bez echa.
Poradnik> jab c .\project -o project.jab --mode lightning
scanning 412 files, 268 MB
writing project.jab
output 96.4 MB (36.0% of input)
elapsed 1.84 s — 145.7 MB/s
> jab t project.jab
412 entries · 268 MB checked · structure and every block
ok
> jab x project.jab -o .\restored --overwrite fail
412 files written, 0 skipped
elapsed 0.94 s
Brak instalatora i brak podpisu kodu: 1.0 to wersja przenośna, a Windows ostrzeże przed niepodpisanym programem.
Brak układu od prawej do lewej, dlatego arabski i hebrajski są przetłumaczone, ale wstrzymane.
Archiwum przyrostowe nie potrafi zapisać usunięcia, a pliki kluczy nie zostały zaimplementowane.
Skalowanie na wątkach wciąż ustępuje RAR-owi, a RAR5 Normal nadal pakuje mocniej.