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

Welche Optionen sind beim Komprimieren von Dateien mit 7 Zip am besten zu verwenden?

Ich muss oft Protokolldateien sammeln und sie auf einen zentralen Server hochladen (der einer anderen Firma gehört). Der zentrale Server hat eine Größenbeschränkung der Datei, also versuche ich, die kleinstmögliche Datei zu erstellen, die noch im Zip-Format ist.

Was sind die besten Einstellungen für die Komprimierung einer Textdatei in ein Zip-Format, wenn ich nur eine kleine Dateigröße benötige?

Ich habe das Offensichtliche getan und die Ultrakomprimierung gewählt, und ich habe festgestellt, dass LZMA eine bessere Arbeit leistet als Deflate, aber es gibt viel zu viele andere Permutationen von Optionen, als dass ich sie alle testen könnte.

Antworten (6)

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

Um die kleinste Standard-ZIP-Datei zu erstellen, die 7-Zip erstellen kann, versuchen Sie es:

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

Quelle: Wie erreiche ich die beste Standard-ZIP-Komprimierung?

Andernfalls, wenn Sie sich nicht um den ZIP-Standard kümmern, verwenden Sie die folgenden Ultra-Einstellungen:

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

Die sind:

-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

Wenn Sie das .7z-Format und nicht nur .zip verwenden können, würde ich einfach PPMD mit den folgenden Optionen verwenden und alles andere so lassen, wie es die Komprimierungsstufe vorgibt:

  • Archivformat: 7z
  • Komprimierungsmethode: PPMD
  • Komprimierungsstufe: Ultra

Ich komprimiere regelmäßig Server-/Textprotokolle (60MB+) mit diesen Optionen und sie kommen normalerweise auf 1-2% der Originalgröße.

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

Nach vielen Experimenten, einem Blick in die ausführliche 7zip-Dokumentation und dem Lesen des 7z-Quellcodes bezüglich der erweiterten LZMA2-Parameter ist hier eine bessere Methode beschrieben. Sie reduzierte einige 1GB-Testdateien aus der Praxis mehr als 2 bis 4 mal besser als die bisher akzeptierten Lösungen, die hier oder sogar in der 7z-Manpage gepostet wurden.

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

Die LZMA2-Komprimierung wird hier vorausgesetzt, aber vielleicht können Sie in 7zip eine noch bessere Leistung erzielen, wenn Sie erweiterte LZMA2-Optionen wie -m0=LZMA2:27 oder -m0=LZMA2:d25 oder ein Array von Parametern wie

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

übergeben. Solche Parameter schienen von den 7z-Versionen, die ich getestet habe, nicht respektiert zu werden, aber vielleicht möchten Sie das weiter erforschen oder den 7z-Code patchen, um sie richtig zu analysieren. Oder vielleicht soll es funktionieren und ist nur in den getesteten Builds defekt.

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

Ich vergleiche für db.fdb 1,2 GB (1236598784 B) in Ubuntu Server 14.04.03 mit p7zip [64] 9.20 auf 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

und habe diese Ergebnisse:

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"

Ich denke, die zweite Methode funktioniert gut = (fast) beste Kompression mit bester Zeit. Aber für die beste “Ansicht” und leicht zu merken ist die erste Methode - mit kleinen Dateien und keinem Punkt von max compress. Zwischen 2 und 3 Methode bekommen wir nicht extra kleinere 7z, aber zahlen fast zweio mehr Zeit für die Kompression. Jeder entscheidet mit seiner eigenen.

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

Ich habe beschlossen, einige Experimente durchzuführen, um empirisch die optimalen Kompressionsparameter zu finden.

Das Tool, das ich verwendet habe, war 7-ZIP finetuner . Dieses Tool sucht nach den optimalen Parametern, indem es einfach die Komprimierung mit verschiedenen Parametern wiederholt und nach der optimalen Kombination sucht. Ein Durchlauf für eine Datei kann manchmal mehr als eine Stunde dauern, selbst auf einem schnellen Computer.

Die Parameter, die es ausprobiert, sind:

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

Ich habe die Standardparameter für die Wörterbuchgröße auf 512 MB und die feste Blockgröße auf Ein belassen. Das Tool verwendet die LZMA-Methode.

Die besten Kombinationen der Parameter bei verschiedenen Dateitypen waren wie folgt:

Ich stelle fest, dass die besten Werte auch für Dateien desselben Typs nicht konstant waren.

Schlussfolgerung: Es gibt keine besten Optionen, da jede Datei ihre eigene beste Kombination haben kann. Man kann alle Parameter bis an ihre Grenzen treiben, aber eine Verbesserung ist keineswegs garantiert.

Die häufigste Kombination scheint zu sein:

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

Einige 7-Zip-Referenzen:

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

Setzen Sie das Feld “split to volume, bytes” auf die maximal zulässige Dateigröße des Servers (in Bytes, glaube ich, obwohl es so aussieht, als ob es gängige Abkürzungen wie “KB” und “MB” akzeptiert). Wenn die Zip-Datei diese Größe überschreitet, teilt 7-zip sie automatisch in mehrere Dateien auf, z.B. integration_serviceLog.zip.001, integration_serviceLog.zip.002 usw. (Früher hat PK Zip dies verwendet, um Zip-Dateien auf mehrere Disketten zu verteilen). Sie müssen alle Dateien vorhanden sein, um sie zu entpacken. Verwenden Sie dies, anstatt sich über die absolut besten Komprimierungseinstellungen für einen bestimmten Satz von Dateien Gedanken zu machen, denn was für eine Datei am besten ist, kann für eine andere Datei anders sein, und Sie möchten dies nicht jedes Mal wiederholen müssen, wenn Sie Protokolle kopieren müssen.