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 die Komprimierung länger dauert.
linux
compression
tar
gzip
Laser
quelle
quelle
top
es mit 200% -400 $ CPU ansehen und sehen.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:
Oder Sie könnten verwenden:
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.
quelle
tar cvf - /path/to/directory | gzip -9 - > file.tar.gz
file.tar
, dagzip
die Erweiterung ".gz" hinzugefügt wird.f -
? Wenn es keine Datei gibt, ist es stdin / outModerne 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.
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.
quelle
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 beidef
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-
dengzip
Anruf.Option
--best
(entspricht-9
) legt die höchste Komprimierungsstufe fest.quelle
xz
undpixz
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.
quelle
-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.Und natürlich muss der von macOS bsd abgeleitete Teer anders sein:
quelle