Antworten:
GZIP=-9 tar cvzf file.tar.gz /path/to/directory
Angenommen, Sie verwenden Bash. Setzen Sie im Allgemeinen die Umgebungsvariable GZIP auf "-9" und führen Sie tar normal aus.
Außerdem: Wenn Sie wirklich die beste Komprimierung wünschen, verwenden Sie kein gzip. Verwenden Sie lzma oder 7z.
Und wenn Sie gzip verwenden (was aus verschiedenen Gründen eine gute Idee ist), ziehen Sie das pigz
Programm in Betracht und nicht das gzip
.
GZIP_OPT
, die Verwendung sollte gleich sein.
Anstatt das gzip-Flag für tar zu verwenden, gzipen Sie die Dateien manuell nach dem tar-Prozess. Anschließend 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 Komprimierungsstufe zu verwenden (Standard ist -6).
Bearbeiten: Pipe-Kommandozeile basierend auf @depesz-Kommentar korrigiert.
tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
file.tar
, da gzip
die Erweiterung ".gz" hinzugefügt wird.
f -
? Wenn es keine Datei gibt, ist es stdin / out
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 , eine Art 7-Zip- Version von gz . Dies bietet eine bessere Komprimierung, wenn Sie die Anforderung erfüllen, xz-Unterstützung zu benötigen.
tar -Jcvf file.tar.xz /path/to/directory
Ich habe gerade herausgefunden hier (im Grunde eine Betrogene dieser Frage, aber in dem Unix - Stack) , dass es auch ein XZ_OPT = -9 Umgebungsvariable die XZ Komprimierungsgrade ähnlich den GZIP eines in dem anderen Beitrag zu steuern.
XZ_OPT=-9 tar -Jcvf file.tar.xz /path/to/directory
tar cv /path/to/directory | gzip --best > file.tar.gz
Dies ist die zweite Lösung von Matrix Mole, jedoch leicht verkürzt:
Wenn Sie tar aufrufen, gibt die Option an f
, dass die Ausgabe eine Datei ist. Wenn Sie es auf -
(stdout) setzen, schreibt tar seine Ausgabe auf stdout, was das Standardverhalten ohne beide f
und ist -
.
Und wie in der gzip
Manpage angegeben, wird gzip aus der Standardeingabe komprimiert, wenn keine Dateien angegeben sind. Es besteht keine Notwendigkeit für -
den gzip
Anruf.
Option --best
(entspricht -9
) legt die höchste Komprimierungsstufe fest.
xz
und pixz
auch. Auf diese Weise können Sie die Anzahl der Threads steuern, die für die parallele Komprimierung verwendet werden, ohne eine dazwischen liegende TAR-Datei erstellen zu müssen. Wie sotar -cv /path/to/dir | pixz -p4 > output.tpxz
Es besteht auch die Möglichkeit, das Komprimierungsprogramm mit -I anzugeben. Dies kann die Option für die Komprimierungsstufe einschließen.
tar -I 'gzip -9' -cvf file.tar.gz /path/to/directory
-I
arg nicht. Sie versuchen, das Ganze als Programmnamen für exec zu behandeln, und schlagen daher fehl. Zumindest ab Teer 1.29 in Debian Stretch funktioniert dies.
top
es mit 200% -400 $ CPU ansehen und sehen.