Diese Frage hat hier bereits eine Antwort:
Die Art und Weise, wie ich die Verwendung von tar + gzip verstehe, tar
ist die, die normalerweise verwendet wird, um eine Gruppierung von Dateien in einer einzelnen Datei zu konsolidieren und diese Datei dann gzip
zu komprimieren.
Ich habe kürzlich erfahren, dass tar
man das auch komprimieren kann.
Da ich die Funktionsweise der Komprimierung im Kern nicht vollständig verstehe, habe ich (möglicherweise lächerlich) Bedenken, dass das Senden eines vorkomprimierten .tar-Objekts an gzip die Komprimierung von gzip verhindern könnte, so gut es das Potenzial zulässt, und solche Dinge.
Meine Frage ist im Wesentlichen: Welche Kombination von Argumenten / Komprimierungsmethoden sollte ich verwenden, um das absolut kleinste tar.gz zu erstellen, und wie sieht die Befehlszeilenanweisung dafür aus?
quelle
Antworten:
Oder Sie können tar so anweisen, die maximale Komprimierung des Benutzers vorzunehmen:
Um Ihre Envvars übersichtlich zu halten, können Sie außerdem Folgendes tun:
quelle
Wie Sie sagten - " tar kann auch komprimieren " impliziert, dass - Daten
tar
nicht immer von selbst komprimiert werden.Dies geschieht nur bei Verwendung mit der
z
Option. Auch das nicht von alleine, sondern durch Weitergabe der geteerten Daten über gzip.Stattdessen können Sie jedoch, wie in dieser Antwort angegeben, die beiden Befehle weiterleiten:
tar
& Damitgzip
können Sie die Komprimierungsstufe für dengzip
Befehl explizit angeben , um die kleinste Ausgabegröße zu erzielen.Hier wird
9
die maximal mögliche Komprimierungsstufe angegeben.quelle
tar -cvf /path
Normalerweise können weder gzip noch tar "das absolut kleinste tar.gz" erzeugen. Es gibt viele Komprimierungsprogramme, die in das gz-Format komprimieren können. Ich habe eine Bash - Skript „geschrieben gz99 “ , um zu versuchen
gzip
,7z
undadvdef
die kleinste Datei zu erhalten. So erstellen Sie mit dieser Option den kleinstmöglichen Dateilauf:Das
advdef
Hilfsprogramm von AdvanceCOMP gibt normalerweise die kleinste Datei an, ist aber auch fehlerhaft (dasgz99
Hilfsprogramm überprüft, ob die Datei nicht beschädigt wurde, bevor die Ausgabe von akzeptiert wirdadvdef
). Für dieadvdef
direkte Verwendung erstellen Sie file.tar.gz, wie Sie möchten. Dann renne:Dadurch wird eine Standard-GZ-Datei erstellt, die von GZIP und TAR wie gewohnt gelesen werden kann und nur ein kleines bisschen kleiner ist. Dies ist ungefähr das Beste, was Sie mit dem gz-Format machen können.
Da Sie erst kürzlich erfahren haben, dass tar komprimiert werden kann, und nicht angegeben haben, warum Sie die kleinste ".tar.gz" -Datei haben möchten, wissen Sie möglicherweise nicht, dass mit tar-Dateien wie xz effizientere Formate verwendet werden können. Im Allgemeinen kann der Wechsel zu einem anderen Format die Komprimierung erheblich verbessern, als wenn Sie mit den gzip-Optionen herumspielen. Der Hauptnachteil von xz ist, dass es nicht so häufig ist wie gzip, sodass die Personen, an die Sie die Datei senden, möglicherweise ein neues Paket installieren müssen. Es ist auch etwas langsamer, insbesondere beim Komprimieren. Wenn Ihnen das egal ist und Sie wirklich die kleinste TAR-Datei wollen, versuchen Sie Folgendes:
Moderne Versionen von tar, zum Beispiel unter Ubuntu 13.10, erkennen komprimierte Dateien automatisch. Selbst wenn Sie die xz-Komprimierung verwenden, können Sie sie wie gewohnt dekomprimieren:
Um einen kurzen Überblick über den Vergleich dieser Komprimierungsprogramme zu erhalten, betrachten Sie den Effekt der Komprimierung von Patch-3.1.1 aus dem Linux-Kernel:
In diesem einfachen Beispiel sehen wir, dass wir advdef brauchen, um die kleinste gz zu erhalten (obwohl 7z -tgzip fast genauso gut und viel weniger fehlerhaft ist). Wir sehen auch, dass der Wechsel zu xz viel mehr Speicherplatz einnimmt als der Versuch, das alte gz-Format optimal zu nutzen, ohne dass die Komprimierung zu lange dauert.
quelle
xz -9
dauert in der Regel etwas wie 5x diegz -9
Zeit, nicht nur 1,5x als Ihr Tisch schlägt vor.gzip
Option--best
(entspricht-9
) fragt nach der höchsten Komprimierungsstufe.quelle
--best
flag: -9 verwenden, was für den Leser verwirrend ist.