Wenn Sie jemals große Volumes mit komprimieren mussten tar
Sie werden wissen, wie schmerzhaft es sein kann. Es geht oft sehr langsam und Sie finden sich schlagen Strg + C. um die Aufgabe zu beenden und sie einfach zu vergessen. Es gibt jedoch einige andere Tools, die tar verwenden kann, und sie sind eine großartige Möglichkeit, die heutigen Multithread-CPUs zu nutzen und die Teerarchivierung zu beschleunigen. Dieser Artikel zeigt Ihnen, wie Sie tar dazu bringen, alle Kerne beim Komprimieren von Archiven unter Linux zu verwenden.
Grundlegendes zu und Installieren der Tools
Die drei hier in Frage kommenden Hauptwerkzeuge sind pigz, pbzip2 und pxz. Es gibt einige subtile Unterschiede zwischen den Werkzeugen, aber die Unterschiede liegen zwischen gzip, bzip2 und xz. In dieser jeweiligen Reihenfolge erhöhen sich die Komprimierungsstufen, was bedeutet, dass ein mit gzip komprimiertes Archiv größer ist als ein mit xz komprimiertes Archiv, aber gzip benötigt natürlich weniger Zeit als xz. bzip2 ist irgendwo in der Mitte.
Das “p”, mit dem die Namen der einzelnen Tools beginnen, bedeutet “parallel”. Parallelisierung ist etwas, das im Laufe der Jahre immer relevanter geworden ist – wie gut sich etwas über alle CPU-Kerne erstreckt. Bei CPUs wie den Epyc- und Threadripper-Leitungen von AMD, die 64 Kerne und 128 Threads erreichen können, ist es wichtig zu verstehen, welche Anwendungen dies nutzen können. Diese Komprimierungsfunktionen sind Hauptkandidaten.
Um die Tools zu installieren, können Sie sich einfach an Ihre Repos wenden.
sudo apt install pigz pbzip2 pxz # Debian/Ubuntu sudo dnf install pigz pbzip2 pxz # Fedora sudo pacman -Sy pigz pbzip2 pxz # Arch Linux
Dieser Artikel konzentriert sich aus Gründen der Konsistenz auf pxz. Sie können dieses Tutorial für pigz lesen.
Archiv mit Teer komprimieren
Die Syntax von tar ist ziemlich einfach. Um ein Verzeichnis einfach zu komprimieren, können Sie einen Befehl wie den folgenden verwenden:
tar czf linux-5.10-rc3.tar.gz linux/ tar cjf linux-5.10-rc3.tar.bz2 linux/ tar cJf linux-5.10-rc3.tar.xz linux/
Der erste verwendet gzip, der zweite bzip2 und der dritte xz. Der Dateiname und das Verzeichnis variieren je nachdem, was Sie tun, aber ich habe den Linux-Kernel von GitHub in mein Verzeichnis “/ home” gezogen und werde ihn verwenden. Also werde ich weitermachen und diesen Befehl mit dem starten time
Befehl an der Vorderseite, um zu sehen, wie lange es dauert. Sie können auch sehen, dass xz den höchsten Prozentsatz meiner CPU auf diesem System beansprucht, aber nur einen Kern auf 100 Prozent fixiert.


Und wie Sie sehen, hat es sehr lange gedauert, bis mein alternder i7-2600 Linux 5.10-rc3 komprimiert hat (ungefähr 28 Minuten).

Hier bieten sich diese parallelen Komprimierungswerkzeuge an. Wenn Sie eine große Datei komprimieren und sie schneller erledigen möchten, kann ich diese Tools nicht genug empfehlen.
Verwenden paralleler Komprimierungswerkzeuge mit Teer
Sie können tar entweder anweisen, ein Komprimierungsprogramm mit dem zu verwenden --use-compression-program
Option, oder Sie können ein etwas einfacheres Befehlsflag von verwenden -I
. Ein Beispiel für die Syntax eines dieser Tools lautet wie folgt:
tar -I pigz -cf linux-5.10-rc3.tar.gz linux/ tar -I pbzip2 -cf linux-5.10-rc3.tar.bz2 linux/ tar -I pxz -cf linux-5.10-rc3.tar.xz linux/
Lassen Sie es uns testen und sehen, wie lange mein System benötigt, um den Linux-Kernel mit Zugriff auf alle acht Threads meiner CPU zu komprimieren. Du kannst meine sehen htop
Anzeige, die alle Threads anzeigt, die aufgrund von pxz zu 100 Prozent ausgelastet sind.


Sie können sehen, dass das Komprimieren dieses Archivs wesentlich weniger Zeit in Anspruch nahm (ungefähr sieben Minuten!), Und das mit Multitasking. Ich habe eine virtuelle Maschine im Hintergrund und surfe gerade im Internet. Der Linux Kernel Hardware Scheduler gibt Ihnen das, was Sie für Ihre persönlichen Sachen benötigen. Wenn Sie also Ihre verlassen haben pxz
Wenn Sie den Befehl ausführen, ohne dass andere Dinge auf Ihrem System ausgeführt werden, können Sie ihn möglicherweise schneller ausführen.

Anpassen der Komprimierungsstufen mit pigz, pbzip2 und pxz
Sie können pxz auch Komprimierungsstufen übergeben, um die Datei noch kleiner zu machen. Dies erfordert mehr RAM, CPU und Zeit, aber es lohnt sich, wenn Sie wirklich eine kleine Datei benötigen. Hier ist ein Vergleich der beiden Befehle und ihrer Ergebnisse nebeneinander.



Die Komprimierung ist nicht viel größer und die Zeit ist es nicht unbedingt wert, aber wenn jedes Megabyte zählt, ist es immer noch eine großartige Option.
Ich hoffe, Ihnen hat dieser Leitfaden zur Verwendung aller Kerne zum Komprimieren von Archiven mit tar gefallen. Schauen Sie sich auch einige unserer anderen Linux-Inhalte an, z. B. wie man einen neuen PC für Linux baut, Apt beherrscht und ein Apt-Guru wird und wie man Arch Linux auf einem Raspberry Pi installiert.
Verbunden: