Allgemeiner Ansatz
Es gibt eine Option für das tar
Programm:
-I, --use-compress-program PROG
filter through PROG (must accept -d)
Sie können die Multithread-Version des Archivierungs- oder Kompressor-Dienstprogramms verwenden.
Die beliebtesten Multithread-Archivierer sind pigz (anstelle von gzip) und pbzip2 (anstelle von bzip2). Zum Beispiel:
$ tar -I pbzip2 -cf OUTPUT_FILE.tar.bz2 paths_to_archive
$ tar --use-compress-program=pigz -cf OUTPUT_FILE.tar.gz paths_to_archive
Der Archivierer muss -d akzeptieren. Wenn Ihr Ersatzdienstprogramm diesen Parameter nicht hat und / oder Sie zusätzliche Parameter angeben müssen, verwenden Sie Pipes (fügen Sie ggf. Parameter hinzu):
$ tar cf - paths_to_archive | pbzip2 > OUTPUT_FILE.tar.gz
$ tar cf - paths_to_archive | pigz > OUTPUT_FILE.tar.gz
Ein- und Ausgabe von Singlethread und Multithread sind kompatibel. Sie können mit der Multithread-Version komprimieren und mit der Singlethread-Version dekomprimieren und umgekehrt.
p7zip
Für p7zip zur Komprimierung benötigen Sie ein kleines Shell-Skript wie das folgende:
#!/bin/sh
case $1 in
-d) 7za -txz -si -so e;;
*) 7za -txz -si -so a .;;
esac 2>/dev/null
Speichern Sie es als 7zhelper.sh. Hier das Anwendungsbeispiel:
$ tar -I 7zhelper.sh -cf OUTPUT_FILE.tar.7z paths_to_archive
$ tar -I 7zhelper.sh -xf OUTPUT_FILE.tar.7z
xz
In Bezug auf Multithread-XZ-Unterstützung. Wenn Sie Version 5.2.0 oder höher von XZ Utils ausgeführt werden , können Sie mehrere Kerne für die Kompression durch Setzen nutzen -T
oder --threads
auf einen entsprechenden Wert über die Umgebungsvariable XZ_DEFAULTS (zB XZ_DEFAULTS="-T 0"
).
Dies ist ein Fragment des Menschen für die Version 5.1.0alpha:
Multithread-Komprimierung und -Dekomprimierung sind noch nicht implementiert, daher hat diese Option vorerst keine Auswirkungen.
Dies funktioniert jedoch nicht für die Dekomprimierung von Dateien, die nicht auch mit aktiviertem Threading komprimiert wurden. Vom Menschen für Version 5.2.2:
Threaded-Dekomprimierung wurde noch nicht implementiert. Es funktioniert nur mit Dateien, die mehrere Blöcke mit Größeninformationen in Blockheadern enthalten. Alle im Multithread-Modus komprimierten Dateien erfüllen diese Bedingung, im Single-Thread-Modus komprimierte Dateien jedoch nicht, selbst wenn --block-size = size verwendet wird.
Neu kompilieren mit Ersatz
Wenn Sie Teer aus Quellen erstellen, können Sie mit Parametern neu kompilieren
--with-gzip=pigz
--with-bzip2=lbzip2
--with-lzip=plzip
Nachdem Sie tar mit diesen Optionen neu kompiliert haben, können Sie die Ausgabe der Hilfe von tar überprüfen:
$ tar --help | grep "lbzip2\|plzip\|pigz"
-j, --bzip2 filter the archive through lbzip2
--lzip filter the archive through plzip
-z, --gzip, --gunzip, --ungzip filter the archive through pigz