2011-07-01 18:00:22 +0000 2011-07-01 18:00:22 +0000
149
149
Advertisement

Wie kann man den Grad der Komprimierung bei der Verwendung von tar -zcvf angeben?

Advertisement

Ich gzip Verzeichnisse sehr oft bei der Arbeit. Was ich normalerweise mache, ist

tar -zcvf file.tar.gz /path/to/directory

Gibt es eine Möglichkeit, die Komprimierungsstufe hier anzugeben? Ich möchte die bestmögliche Komprimierung verwenden, auch wenn sie mehr Zeit zum Komprimieren benötigt.

Advertisement
Advertisement

Antworten (5)

69
69
69
2011-07-01 18:25:45 +0000

Anstatt das gzip-Flag für tar zu verwenden, gzipen Sie die Dateien manuell nach dem tar-Prozess, dann können Sie die Komprimierungsstufe für das gzip-Programm angeben:

tar -cvf files.tar /path/to/file0 /path/to/file1 ; gzip -9 files.tar

Oder Sie könnten verwenden:

tar cvf - /path/to/file0 /path/to/file1 | gzip -9 - > files.tar.gz

Die -9 in der gzip-Befehlszeile weist gzip an, die maximal mögliche Kompressionsstufe zu verwenden (Standard ist -6).

Bearbeitung: Die Pipe-Befehlszeile wurde aufgrund des Kommentars von @depesz korrigiert.

55
55
55
2012-12-19 03:03:43 +0000

Moderne Versionen von tar unterstützen das xz-Archivformat (GNU tar, seit 1.22 im Jahr 2009, Busybox seit 1.17.0 im Jahr 2010).

Es basiert auf lzma2 , so etwas wie eine 7-Zip Version von gz . Dies bietet eine bessere Komprimierung, wenn Sie mit der Anforderung, xz-Unterstützung zu benötigen, einverstanden sind.

tar -Jcvf file.tar.xz /path/to/directory

Ich habe gerade hier (im Grunde ein Duplikat dieser Frage, aber im Unix-Stackexchange) herausgefunden, dass es auch eine XZ_OPT=-9-Umgebungsvariable gibt, um die XZ-Komprimierungsstufe zu steuern, ähnlich wie die GZIP-Variable im anderen Beitrag.

XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
34
Advertisement
34
34
2013-02-04 18:17:32 +0000
Advertisement
tar cv /path/to/directory | gzip --best > file.tar.gz

Dies ist die zweite Lösung von Matrix Mole, jedoch leicht gekürzt:

Beim Aufruf von tar gibt die Option f an, dass die Ausgabe eine Datei ist. Das Setzen auf - (stdout) bewirkt, dass tar seine Ausgabe nach stdout schreibt, was das Standardverhalten ohne f und - ist.

Und wie in der gzip-Manualseite angegeben, komprimiert gzip von der Standardeingabe, wenn keine Dateien angegeben sind. Es besteht keine Notwendigkeit für - im gzip-Aufruf.

Die Option --best (äquivalent zu -9) setzt die höchste Kompressionsstufe.

10
10
10
2016-06-21 04:21:54 +0000

Es gibt auch die Möglichkeit, das Komprimierungsprogramm mit -I anzugeben. Dies kann die Option für die Komprimierungsstufe beinhalten.

tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory
3
Advertisement
3
3
2019-01-19 16:26:40 +0000
Advertisement

Und natürlich muss macOS bsd-abgeleitetes tar anders sein:

tar -czf file.tar.gz --options gzip:compression-level=9 /path/to/directory
Advertisement

Verwandte Fragen

6
10
5
37
11
Advertisement
Advertisement