2011-05-10 14:19:13 +0000 2011-05-10 14:19:13 +0000
69
69
Advertisement

Wat zijn de beste opties om te gebruiken bij het comprimeren van bestanden met 7 Zip?

Advertisement

Ik moet vaak logbestanden verzamelen en uploaden naar een centrale server (Eigendom van een ander bedrijf). De centrale server heeft een limiet op de grootte van het bestand, dus ik probeer een zo klein mogelijk bestand te maken dat nog steeds in het zip formaat is.

Wat zijn de beste instellingen om een tekstbestand te comprimeren tot een zip-formaat als mijn enige behoefte een kleine bestandsgrootte is?

Ik heb het voor de hand liggende gedaan en gekozen voor ultra compressie, en ik heb gemerkt dat LZMA het beter doet dan deflate, maar er zijn veel te veel andere permutaties van opties voor mij om ze allemaal te testen.

Advertisement
Advertisement

Antwoorden (6)

65
65
65
2014-04-15 15:15:36 +0000

Om het kleinste standaard ZIP bestand te maken dat 7-Zip kan maken, probeer:

7z a -mm=Deflate -mfb=258 -mpass=15 -r foo.zip C:\Path\To\Files\*

Bron: Hoe bereik ik de beste, standaard ZIP-compressie? ](https://superuser.com/a/154984/87805)

Anders, als de ZIP-standaard u niet interesseert, gebruikt u de volgende ultra-instellingen:

7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on archive.7z dir1

Welke zijn:

-t7z 7z archive

-m0=lzma
       lzma method

-mx=9 level of compression = 9 (Ultra)

-mfb=64
       number of fast bytes for LZMA = 64
-md=32m
       dictionary size = 32 megabytes

-ms=on solid archive = on
14
14
14
2013-07-15 10:33:24 +0000

Als je het .7z formaat kunt gebruiken in plaats van alleen .zip, zou ik gewoon PPMD gebruiken met de volgende opties en al het andere laten zoals ingesteld bij het Compressie Niveau:

  • Archief Formaat: 7z
  • Compressiemethode: PPMD
  • Compressieniveau: Ultra

Ik comprimeer regelmatig server/tekst logs (60MB+) met deze opties en ze komen meestal uit op 1-2% van de oorspronkelijke grootte.

8
Advertisement
8
8
2019-06-17 16:25:32 +0000
Advertisement

Na veel experimenteren, graven in de gedetailleerde 7zip documentatie, en het lezen van enkele van de 7z broncodes betreffende de geavanceerde LZMA2 parameters, staat hieronder een betere methode. Het verkleinde enkele 1GB real-world test bestanden meer dan 2 tot 4 keer beter dan de eerder geaccepteerde oplossingen hier gepost of zelfs in de 7z manpage.

7z a -t7z -mx=9 -mfb=273 -ms -md=31 -myx=9 -mtm=- -mmt -mmtf -md=1536m -mmf=bt3 -mmc=10000 -mpb=0 -mlc=0 archive.7z inputfileordir

De LZMA2 compressie wordt hier verondersteld, maar je zou in staat kunnen zijn om nog betere prestaties in 7zip te krijgen met het doorgeven van geavanceerde LZMA2 opties zoals -m0=LZMA2:27, of -m0=LZMA2:d25, of een array van parameters zoals

-m0=BCJ2 -m1=LZMA:d25 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1

Zulke parameters leken niet gerespecteerd te worden door de 7z versies die ik getest heb, maar je zou verder kunnen zoeken of de 7z code kunnen aanpassen om ze correct te parsen. Of misschien zou het moeten werken en is het gewoon kapot in de builds die werden getest.

7
7
7
2016-08-15 13:27:49 +0000

Ik vergelijk voor db.fdb 1,2 GB (1236598784 B) in Ubuntu server 14.04.03 met p7zip [64] 9.20 op VM:

1. 7z a -mx=9 1.7z db.fdb
2. 7z a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=on 2.7z db.fdb
3. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on 3.7z db.fdb
4. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -pass=15 4.7z db.fdb
5. 7z a -mx=9 -mmt=on 5.7z db.fdb
6. 7z a -t7z -m0=lzma -mx=9 -mfb=258 -md=32m -ms=on -mmt=on 6.7z db.fdb

en heb die resultaten:

1.7z 96 MB (100108731 B) with 6' 25"
2.7z 95 MB ( 99520375 B) with 5' 18"
3.7z 93 MB ( 97512311 B) with 9' 19"
4.7z 93 MB ( 97512345 B) with 9' 40"
5.7z 96 MB (100108731 B) with 5' 26"
6.7z 93 MB ( 97512311 B) with 9' 09"

Ik denk dat de tweede methode prima werkt = (bijna) beste compressie met beste tijd. Maar voor de beste “view” en makkelijk te onthouden is de eerste methode - met kleine bestanden en geen punt van max compress. Tussen 2 en 3 methode krijgen we geen extra kleinere 7z maar betalen bijna twee keer meer tijd voor compressie. Iedereen beslist met zijn eigen.

3
Advertisement
3
3
2019-12-05 09:37:09 +0000
Advertisement

Ik heb besloten om wat experimenten te doen om empirisch de optimale compressieparameters te vinden.

Het gereedschap dat ik heb gebruikt wa 7-ZIP finetuner . Deze tool zoekt naar de optimale parameters door eenvoudigweg de compressie te herhalen met variërende parameters op zoek naar de optimale combinatie. Een run voor één bestand kan soms meer dan een uur duren, zelfs op een snelle computer.

De parameters die het probeert zijn:

LC : number of Literal Context bits
LP : number of Literal Pos bits
PB : number of Pos Bits
YX : level of file analysis
FB : number of Fast Bytes

Ik heb de standaardparameters van de woordenboekgrootte op 512 MB gelaten en de vaste blokgrootte Aan. Het programma gebruikt de LZMA-methode.

De beste combinaties van parameters op verschillende soorten bestanden waren als volgt:

Ik merk op dat de beste waarden niet constant waren, zelfs niet voor bestanden van hetzelfde type.

Conclusie: Er zijn geen beste opties , aangezien elk bestand zijn eigen unieke beste combinatie kan hebben. Men kan alle parameters tot het uiterste drijven, maar een verbetering is absoluut niet gegarandeerd.

De meest voorkomende combinatie lijkt te zijn:

LC : 8
LP : 0
PB : 1
YX : 5
FB : 273

Enkele 7-Zip referenties:

0
0
0
2011-05-10 14:37:36 +0000

Stel het veld “split to volume, bytes” in op de maximaal toegestane bestandsgrootte van de server (in bytes, denk ik, hoewel het lijkt alsof het gebruikelijke afkortingen als “KB” en “MB” accepteert). Als het zip-bestand die grootte overschrijdt, zal 7-zip het automatisch in meerdere bestanden splitsen, zoals integration_serviceLog.zip.001, integration_serviceLog.zip.002, enz. (Vroeger gebruikte PK Zip dit om zip-bestanden over meerdere diskettes te spreiden). Alle bestanden moeten aanwezig zijn om ze uit te pakken. Gebruik dat in plaats van je zorgen te maken over de beste compressie-instellingen voor een bepaalde set bestanden, want wat het beste is voor het ene bestand kan anders zijn voor een ander bestand, en je wilt dit niet elke keer opnieuw moeten doen als je logs moet kopiëren.

Advertisement

Gerelateerde vragen

11
6
13
3
3
Advertisement