# zstd — Schnelle Kompression mit Zstandard

> Praxis-Guide zu zstd (Zstandard) — schnelle Kompression mit hervorragendem Verhältnis von Tempo und Größe, Multi-Threading und tar-Integration.

Source: https://www.jpkc.com/db/cheatsheets/archives/zstd/

<!-- PROSE:intro -->
zstd (Zstandard) ist ein modernes Kompressionswerkzeug von Meta, das ein bemerkenswertes Gleichgewicht aus Geschwindigkeit und Kompressionsrate trifft – bei Standardstufe 3 packt es nahezu in Echtzeit, auf höheren Stufen erreicht es Raten auf xz-Niveau. Dazu kommen Multi-Threading, eine nahtlose tar-Integration und Wörterbuch-Kompression für viele kleine Dateien. Dieser Guide zeigt dir die wichtigsten Befehle für den Alltag – vom schnellen Komprimieren bis zum gestreamten Datenbank-Backup.
<!-- PROSE:intro:end -->

## Komprimieren

`zstd <file>` — Komprimiert eine Datei (erzeugt file.zst, behält das Original).

```bash
zstd data.log
```

`zstd -<level> <file>` — Komprimiert mit einer bestimmten Stufe (1=schnellste, 19=beste, Standard 3).

```bash
zstd -19 data.log
```

`zstd --ultra -<level> <file>` — Nutzt die Ultra-Stufen (20–22, sehr langsam, aber am kleinsten).

```bash
zstd --ultra -22 data.log
```

`zstd -o <output> <file>` — Komprimiert in einen bestimmten Ausgabe-Dateinamen.

```bash
zstd -o backup.zst data.log
```

`zstd --rm <file>` — Komprimiert und löscht anschließend das Original.

```bash
zstd --rm data.log
```

`zstd -T<n> <file>` — Multi-Threaded-Kompression (0=Kerne automatisch erkennen).

```bash
zstd -T0 -19 largefile.dat
```

## Dekomprimieren

`zstd -d <file>.zst` — Dekomprimiert eine Datei.

```bash
zstd -d data.log.zst
```

`unzstd <file>.zst` — Dekomprimiert (Alias für zstd -d).

```bash
unzstd data.log.zst
```

`zstd -d -o <output> <file>.zst` — Dekomprimiert in einen bestimmten Dateinamen.

```bash
zstd -d -o restored.log data.log.zst
```

`zstdcat <file>.zst` — Dekomprimiert nach stdout (wie zcat bei gzip).

```bash
zstdcat data.log.zst | grep 'error'
```

`zstd -d --rm <file>.zst` — Dekomprimiert und löscht anschließend die komprimierte Datei.

```bash
zstd -d --rm data.log.zst
```

## Piping & Streaming

`<command> | zstd > <output>.zst` — Komprimiert per Pipe übergebene Daten.

```bash
mysqldump mydb | zstd > backup.sql.zst
```

`zstd -d < <input>.zst | <command>` — Dekomprimiert und leitet an einen Befehl weiter.

```bash
zstd -d < backup.sql.zst | mysql mydb
```

`tar cf - <dir> | zstd > <archive>.tar.zst` — Erzeugt ein tar.zst-Archiv (tar + zstd).

```bash
tar cf - project/ | zstd -T0 > project.tar.zst
```

`zstd -d < <archive>.tar.zst | tar xf -` — Entpackt ein tar.zst-Archiv.

```bash
zstd -d < project.tar.zst | tar xf -
```

`tar --zstd -cf <archive>.tar.zst <dir>` — Erzeugt tar.zst über die eingebaute zstd-Unterstützung von tar (GNU tar).

```bash
tar --zstd -cf project.tar.zst project/
```

`tar --zstd -xf <archive>.tar.zst` — Entpackt tar.zst über die eingebaute Unterstützung von tar.

```bash
tar --zstd -xf project.tar.zst
```

## Mehrere Dateien

`zstd <file1> <file2> <file3>` — Komprimiert mehrere Dateien einzeln.

```bash
zstd *.log
```

`zstd -d *.zst` — Dekomprimiert mehrere Dateien.

```bash
zstd -d *.zst
```

`zstd -r <dir>` — Komprimiert rekursiv alle Dateien in einem Verzeichnis.

```bash
zstd -r /var/log/old/
```

## Info & Test

`zstd -l <file>.zst` — Zeigt Kompressions-Infos (Rate, Größen).

```bash
zstd -l data.log.zst
```

`zstd -t <file>.zst` — Prüft die Integrität einer komprimierten Datei.

```bash
zstd -t backup.sql.zst
```

`zstd -b <file>` — Benchmarkt die Kompressions-/Dekompressionsgeschwindigkeit.

```bash
zstd -b data.log
```

`zstd -b -e<level> <file>` — Benchmarkt über mehrere Kompressionsstufen hinweg.

```bash
zstd -b1 -e19 data.log
```

`zstd -V` — Zeigt die zstd-Version an.

```bash
zstd -V
```

<!-- PROSE:outro -->
## Fazit

zstd ist heute die naheliegende Wahl, wenn du Geschwindigkeit und Kompressionsrate zugleich willst: Die Standardstufe 3 ist blitzschnell, mit `-T0` skaliert es über alle Kerne, und `tar --zstd` macht das Archivieren bequem. Zwei Dinge solltest du im Blick behalten: `--rm` löscht das Original unwiderruflich – verwende es nur, wenn die komprimierte Datei sicher angekommen ist. Und die Ultra-Stufen `--ultra -20` bis `-22` brauchen nicht nur beim Packen, sondern auch beim Entpacken deutlich mehr Arbeitsspeicher – auf knapp bemessenen Zielsystemen also mit Bedacht einsetzen.

## Weiterführende Links

- [zstd – GitHub-Projekt](https://github.com/facebook/zstd) – Quellcode, Releases und Dokumentation (englisch)
- [Zstandard – offizielle Projektseite](https://facebook.github.io/zstd/) – Format-Spezifikation, Benchmarks und Handbuch (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [7z](https://www.jpkc.com/db/cheatsheets/archives/7z/) – Hochkomprimierendes Archivformat mit starker LZMA-Kompression
- [gzip](https://www.jpkc.com/db/cheatsheets/archives/gzip/) – klassischer, weit verbreiteter Kompressor (DEFLATE)
- [tar](https://www.jpkc.com/db/cheatsheets/archives/tar/) – bündelt Dateien zu einem Archiv, oft mit zstd kombiniert

