Drie modi, één beslissing
Lightning voor snelheid, Balanced voor het midden, Compact voor de omvang. Het paneel zegt welke de snelste en welke de kleinste is in plaats van dat achter een cijfer van 1 tot 9 te verstoppen.
Deze pagina is nog niet naar het Nederlands vertaald en wordt daarom in het Engels getoond. Het programma zelf is volledig naar het Nederlands vertaald.
Functies
Wat echt gebouwd, getest en in gebruik is. Wat half af is, wordt op deze pagina bij naam genoemd in plaats van gesuggereerd.
Lightning voor snelheid, Balanced voor het midden, Compact voor de omvang. Het paneel zegt welke de snelste en welke de kleinste is in plaats van dat achter een cijfer van 1 tot 9 te verstoppen.
Een overeenkomstzoeker, een canonieke huffmanfase en een decodeertabel met twee niveaus — allemaal eigen code van dit project. Er is geen compressiebibliotheek van derden aan het programma gelinkt.
Blokken worden parallel gecomprimeerd over de processors die je toestaat, binnen een geheugenplafond dat je in de instellingen zet. Met een lager plafond komt het nog steeds rond; er overlapt alleen minder.
Versies van één document, exports met hetzelfde schema, logbestanden in hetzelfde formaat: een woordenboek dat over die bestanden heen is gebouwd mat 16,7% van het archief dat dezelfde bestanden zonder dat woordenboek opleveren. Staat standaard uit, want in een gemengde map levert het niets op.
.jab is de eigen container: het snelst te schrijven, met controlesommen per blok, en als enige van de drie kan het hier een wachtwoord dragen. .zip en .7z worden eenvoudig weggeschreven, zodat elk ander programma ze zonder gemopper opent.
Store en deflate voor ZIP, LZMA2-mappen voor 7z inclusief het x86-vertakkingsfilter bij het lezen, ustar met lange GNU-namen voor tar.
Een .zip die hier geschreven wordt heeft geen AES, geen uitgebreide tijdstempels en geen Unix-rechten. Een .7z heeft één LZMA2-map per solide blok en geen filters per bestand. Wil je betere compressie, SHA-256 per blok of een wachtwoord, dan is het antwoord .jab.
Eén record per blok, een nonce van 96 bits en een tag van 128 bits, uit de implementatie van het besturingssysteem zelf. In dit project wordt geen cryptografie verzonnen.
Het manifest — bestandsnamen, groottes, tijdstempels, attributen — is één versleuteld record, en dat geldt ook voor de bloktabel met de SHA-256- en CRC-32C-waarden per blok.
Een tag over lege platte tekst vertelt een lezer na één enkele PBKDF2-afleiding dat het wachtwoord fout is, in plaats van pas na het decoderen van het hele archief.
Reserveer 1 tot 30% reservegegevens binnen een .jab en een beschadigd blok kan worden herbouwd in plaats van alleen gemeld. Ze moeten erin zitten vóór de schade, en alleen .jab kan ze dragen.
Elk blok draagt een CRC-32C; SHA-256 per blok staat aan tenzij je het uitzet. Het eerste zegt dat een blok fout is, het tweede maakt een stilletjes gemiste fout verwaarloosbaar onwaarschijnlijk.
Grondig controleren leest kop, staart, bloktabel en manifest op samenhang en decodeert daarna elk blok. Alleen decoderen slaat de structuurronde over. Geen van beide schrijft een bestand.
Geen van beide controles kan je vertellen dat er niet met een archief is geknoeid: wie de gegevens kan wijzigen, kan beide waarden opnieuw berekenen. Alleen een archief met wachtwoord beantwoordt die vraag.
Een archief wordt naar een .partial-bestand geschreven en pas hernoemd als het compleet is, zodat een afgebroken run nooit iets achterlaat dat afgemaakt lijkt.
Schrijft .001, .002, … naast het archief, op 10, 25, 100 of 700 MB, of op elke grootte die je intikt. De delen zijn op zichzelf niet leesbaar; bij het samenvoegen wordt elk deel gecontroleerd voordat er wordt geschreven.
Vergelijkt hele bestanden via SHA-256 binnen een archief, zodat alleen exacte kopieën worden gemeld, en vertelt hoeveel ruimte het verwijderen van de overtollige zou opleveren. Lege bestanden worden overgeslagen.
Controleert of een map nog overeenkomt met wat er gearchiveerd is. Beide kanten worden gehasht, dus ook een wijziging die grootte en tijdstempel gelijk liet, wordt gevonden.
Scannen meldt welke scherven beschadigd zijn en schrijft niets. Herstellen schrijft precies de foute delen opnieuw, met behulp van de herstelgegevens.
Geen webweergave, geen framework: de interface wordt met Direct2D en DirectWrite getekend, en daarom start ze meteen en blijft ze reageren terwijl een taak loopt.
Open een archief, sorteer en filter de inhoud en bekijk tekst, afbeeldingen, pdf — één pagina — en audio zonder eerst uit te pakken.
Taken lopen één voor één in de volgorde waarin ze zijn toegevoegd. Een wachtende taak kun je verplaatsen of weggooien, de lopende kun je pauzeren, en een lange taak kan naar de achtergrond in plaats van het venster te blokkeren.
Vind een archief op naam en druk op Enter om in de gevonden archieven te kijken. Het zegt ronduit hoeveel het las, hoeveel er ontbraken en hoeveel het niet kon openen.
Rechtsklikitems om in te pakken, uit te pakken en te testen, toegevoegd vanuit het instellingenscherm en op diezelfde plek weer verwijderd.
Elke tekst in de interface is naar 28 talen vertaald, met meervoudsregels per taal in plaats van één Engelse regel die overal wordt toegepast.
Dezelfde motor, geschikt voor scripts. Maken, uitpakken, opsommen, testen en controleren, met het aantal threads, het geheugenbudget en het integriteitsniveau als schakelaars. Een wachtwoord wordt nooit als argument aanvaard — de volledige opdrachtregel van een lopend proces is leesbaar voor andere processen van hetzelfde account — dus het wordt van de standaardinvoer gelezen of zonder echo gevraagd.
Handleiding> 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
Geen installatieprogramma en geen handtekening: 1.0 is een draagbare build, en Windows waarschuwt voor een niet-ondertekend programma.
Geen indeling van rechts naar links, en daarom zijn Arabisch en Hebreeuws wel vertaald maar niet uitgebracht.
Een incrementeel archief kan een verwijdering niet vastleggen, en sleutelbestanden zijn niet gebouwd.
De schaling over threads blijft onder die van RAR, en RAR5 Normal comprimeert nog altijd kleiner.