Ich habe Hunderte von ähnlich großen Dateien (jeweils 30 Megabyte), die ich komprimieren möchte. Jedes Dateipaar enthält 99% der gleichen Daten (weniger als 1% Unterschied), daher erwarte ich nicht mehr als 40-50 Megabyte Archiv.
Einzelne Datei kann von 30 MB auf 13 bis 15 MB komprimiert wird (mit xz -1
, gz -1
, bzip2 -1
), aber wenn zwei Komprimieren oder mehr Dateien mag ich Archiv haben , mit der Größe , 13-15MB + N*0.3MB
wobei N Anzahl der Dateien ist.
Wenn ich tar
(um ein solides Archiv zu erstellen) und xz -6
(um das Komprimierungswörterbuch so zu definieren, dass es größer als eine Datei ist - Aktualisieren - das war nicht genug! ) Verwende , habe ich immer noch ein Archiv mit Größe N*13MB
.
Ich denke, dass beide gzip
und bzip2
mir nicht helfen werden, da sie weniger als 1 MB Wörterbuch haben und mein Teer-Stream alle 30 MB Wiederholungen hat.
Wie kann ich mein Problem in modernem Linux mit Standardwerkzeugen archivieren?
Ist es möglich, xz
die Komprimierung schnell einzustellen, aber ein Wörterbuch zu verwenden, das größer als 30-60 MB ist?
Update : Hab den Trick mit gemacht tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz
. Nicht sicher notwendig , von mf=hc4
und --memory=2G
Optionen; aber dict=128M
das Wörterbuch gesetzt groß genug (größer als eine Datei) zu sein, und mode=fast
machen den Prozess etwas schneller als -e
.
xz -1 --memory=2G
hat nicht geholfen, getestet an 2 und 4 Dateien aus dem Set.