ubuntuusers.de

zstd

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

zstd_logo.png Zstandard 🇬🇧 (kurz: zstd) ist ein Kompressionsverfahren für Dateien. zstd ist das jüngste der gängigen Kompressionsverfahren. Es kombiniert die Vorteile mehrerer Algorithmen wie LZ77 und Entropiekodierung. Während andere Verfahren entweder auf hohe Geschwindigkeit oder eine hohe Kompressionsrate optimiert sind, kann zstd in einer breiten Spanne von hoher Kompressionsrate bis hoher Geschwindigkeit genutzt werden. Des Weiteren hat zstd einen Modus, mit dem sich (viele) kleine Dateien effektiv komprimieren lassen.

zstd wurde bei Facebook entwickelt, die Version 1.0 erschien im Sommer 2016. zstd kommt in vielen Projekten zum Einsatz. Der Linux-Kernel unterstützt zstd als Komprimierungsverfahren unter anderem für die Dateisysteme BtrFS und SquashFS. Einige Linuxdistributionen wie z.B. Arch und Fedora komprimieren die Paket in deren Paketquellen mit zstd.

Installation

zstd ist in den Ubuntu Paketquellen enthalten und kann über das Paket

  • zstd

Befehl zum Installieren der Pakete:

sudo apt-get install zstd 

Oder mit apturl installieren, Link: apt://zstd

installiert werden[1].

Nutzung

Die allgemeine Syntax von zstd lautet:

zstd [OPTIONEN] EINGABEDATEI(EN) [-o AUSGABEDATEI] 

Übergibt man mehr als eine Eingabedatei und lässt die Option -o AUSGABEDATEI weg, dann wird für jede Eingabedatei eine komprimierte Datei erzeugt. Gibt man -o AUSGABEDATEI bei mehreren Eingabedateien an, werden diese alle zusammen in AUSGABEDATEI gepackt.

Dateien packen

Der Aufruf von z.B.

zstd data.txt  

würde die Datei data.txt mit der Kompressionsstufe 3 (Voreinstellung von zstd) komprimieren und die komprimierten Daten in die Datei data.txt.zst speichern. Als Ausgabe bei der Ausführung des Befehls erhält man:

data.txt            : 33.97%   (  1201 =>    408 bytes, data.txt.zst)

Es wird also ausgegeben, welche Ausgabedatei generiert wird und wie hoch der Komprimierungsgrad ist.

Möchte man mehrere Dateien in eine komprimieren, nutzt man den Befehl

zstd data1.txt data2.txt -o data_compressed.zst 

Die Ausgabe sieht dann z.B. so aus:

zstd: WARNING: all input files will be processed and concatenated into a single output file: data_comp 
The concatenated output CANNOT regenerate the original directory tree. 
2 files compressed : 43.92%  (  1874 =>    823 bytes)

zstd kennt viele Optionen, von denen die wichtigsten hier aufgeführt sind:

Optionen von zstd
Option Erklärung
-KOMPRESSIONSLEVEL Die Komprimierung wird mit dem Kompressionslevel KOMPRESSIONSLEVEL durchgeführt, dieser kann zwischen 1 und 19 liegen. Voreinstellung ist 3
--ultra Erlaubt noch höhere Kompressionslevel zwischen 20 und 22. Diese hohen Kompressionslevel verbrauchen (deutlich) mehr RAM als die Kompressionslevel 1 bis 19.
--fast[=STUFE] Auf schnelle Komprimierung wechseln. Optional kann die Stufe STUFE angegeben werden, diese kann zwischen 1 und 19 liegen. Wird die Option --fast angeben, wird die Option -KOMPRESSIONSLEVEL ignoriert.
-TANZAHL ANZAHL von Threads verwenden. Voreinstellung ist -T1 (=ein Thread). Gibt man -T0 an, wird die Anzahl der Threads gleich der Anzahl der CPU-Kerne gewählt.
-d, --decompress Datei entpacken

Alle weiteren Optionen lassen sich entweder in der Man-Page lesen oder über den Aufruf von zstd -h anzeigen.

Dateien entpacken

Zum Entpacken dient der Befehl

zstd -d DATEI.zst
#oder
unzstd DATEI.zst 

Informationen zu gepackter Datei anzeigen

Mit dem Aufruf von

zstd -l data.txt.zst 

werden Informationen zu einer gepackten Datei angezeigt. Die Ausgabe sieht z.B so aus:

 
Frames  Skips  Compressed  Uncompressed  Ratio  Check  Filename
     1      0     1.19 KB       1.17 KB  0.988  XXH64  data1.txt.zst

optimiertes Packen von kleinen Dateien

zstd kennt eine Methode vom optimierten Packen vieler kleiner Dateien. Dazu müssen Trainingsdaten vorhanden sein, also Daten, die typisch / representative für die später zu packenden Dateien sind. Mit deren Hilfe legt zstd ein Trainingwörterbuch an. Dieses Wörterbuch muss dann beim Packen und (!) Entpacken angegeben werden, um ein besseres Ergebnis zu erhalten.

Das prinzipielle Vorgehen ist wie folgt:

  • Zuerst wird das Trainingswörterbuch TRAININGSWÖRTERBUCH angelegt:

    zstd --train PFAD/ZU/TRAININGSDATEIEN/* -o TRAININGWÖRTERBUCH 
  • Dann können die Dateien optimiert gepackt werden:

    zstd -D TRAININGWÖRTERBUCH DATEI(EN) 
  • Zum Entpacken wird das Trainingswörterbuch auch benötigt:

    zstd -d -D TRAININGWÖRTERBUCH DATEI.zst 

Weitere Informationen zu diesem Thema findet man in der Dokumentation 🇬🇧.

Benchmarking

zstd bietet eine bzw. zwei Optionen zum Benchmarking, mit der die Komprimierungsgeschwindigkeit des Systems und der Komprimierungsgrad einer Datei getestet werden kann. Dabei wird keine gepackte zstd-Datei auf dem Laufwerk angelegt. Der Befehl lautet:

zstd -b5 EINGABEDATEI.txt 

Dabei würde die Datei EINGABEDATEI.txt testweise auf Stufe 5 komprimiert und das Ergebnis ausgeben. Statt 5 kann natürlich auch jede anderen Stufe zwischen 1 und 19 angegeben werden.

Man kann auch mehrere Kompressionsstufen in einem Durchlauf testen. Mit dem folgenden Befehl von Stufe 1 bis einschließlich Stufe 19:

zstd -b1 -e19 EINGABEDATEI.txt 

Die Ausgabe sieht z.B. so aus:

 1#data3.txt         :      2139 ->      1048 (2.041), 220.3 MB/s , 504.5 MB/s 
 2#data3.txt         :      2139 ->      1057 (2.024), 204.1 MB/s , 466.2 MB/s 
 3#data3.txt         :      2139 ->      1042 (2.053), 182.5 MB/s , 461.5 MB/s 
...
18#data3.txt         :      2139 ->      1013 (2.112),  7.57 MB/s , 466.1 MB/s 
19#data3.txt         :      2139 ->      1013 (2.112),  7.56 MB/s , 465.7 MB/s 

Ausgegeben wird also die Kompressionsstufe, die Ausgangsgröße der Datei, die Größe, die die komprimierte Datei hätte, der Kompressionsfaktor sowie der erreichte Datendurchsatz beim Komprimieren und Dekomprimieren.

Intern

  • Archivmanager Übersichtsartikel zu Archivierungsmethoden und -Programme

Extern

Diese Revision wurde am 26. Dezember 2022 17:03 von chris34 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Komprimierung, Packprogramme, Archivmanager