linux-cli-shell cli file-management compression gzip bzip2 xz

Compression Tools: Gzip, Bzip2 & XZ (Artikel 279)

Analyse der klassischen Linux-Kompressionswerkzeuge. Erfahren Sie alles über die Vorzüge von Gzip für Geschwindigkeit, Bzip2 für Stabilität und XZ für maximale Platzersparnis.

# Compression Tools: Gzip, Bzip2 und XZ im Vergleich

TL;DR / Management Summary In der Linux-Welt werden Archivierung (tar) und Kompression (gzip/xz) oft getrennt behandelt. Während tar Dateien bündelt, reduzieren Tools wie gzip, bzip2 und xz die Größe einzelner Dateien. Ein Senior Admin wählt das Werkzeug nach dem Ziel: Gzip für schnelle Log-Kompression, Bzip2 für bewährte Stabilität und XZ für Software-Distributionen, die minimalen Speicherplatz benötigen.


# 1. Einführung & Architektur

Der Kampf um die Bits.

Jedes Tool nutzt einen anderen Algorithmus:

  • Gzip (DEFLATE): Sehr schnell, geringer CPU-Verbrauch.
  • Bzip2 (Burrows-Wheeler): Langsamer als Gzip, meist bessere Kompression.
  • XZ (LZMA2): Langsam beim Komprimieren, extrem hohe Kompression, schnell beim Entpacken.

# Die Performance-Matrix (Mermaid)

graph TD
    A[Raw File: 1GB] --> B{Compression Choice}
    B -->|gzip -1: Speed| C[900MB / 5 sec]
    B -->|gzip -9: Balance| D[700MB / 20 sec]
    B -->|bzip2: Legacy| E[650MB / 60 sec]
    B -->|xz -9: Max Ratio| F[500MB / 300 sec]
    C/D/E/F --> G[Storage / Transfer]

# 2. Die Klassiker in Aktion

Einzelne Dateien schrumpfen.

# Gzip (Standard für Logs)

# Datei komprimieren (Original wird gelöscht!)
gzip my_log.txt
# Wieder entpacken
gunzip my_log.txt.gz

# XZ (Standard für Pakete)

# -k: Keep (Originaldatei behalten)
xz -k large_binary

# 3. Arbeiten mit Streams: Der z-Vorteil

Lesen ohne Entpacken.

Man muss eine Datei nicht erst entpacken, um sie zu lesen. Das spart massiv I/O und Disk-Platz.

# In komprimierte Logs schauen

# Zeigt den Inhalt von .gz Dateien an
zcat /var/log/syslog.2.gz | grep "ERROR"

# Analog für andere Formate:
bzcat backup.bz2 | head
xzcat kernel.xz | less

# 4. Day-2 Operations: Massen-Kompression

Ordner effizient schrumpfen.

Nutzen Sie xargs (Artikel 258), um hunderte Dateien parallel zu komprimieren:

# Komprimiere alle .log Dateien mit 4 CPU-Kernen parallel
ls *.log | xargs -P 4 gzip

# 5. Troubleshooting & “War Stories”

Wenn die Kompression schadet.

# Story 1: “Der Time-out im Backup”

Symptom: Das tägliche Backup-Skript bricht nach 2 Stunden ab, obwohl die Datenmenge klein ist. Ursache: Der Admin hat xz -9 für hunderte Gigabyte genutzt. Die CPU war am Limit, und das übergeordnete Skript lief in einen Timeout. Lösung: Nutzen Sie gzip oder zstd (Artikel 277) für Backups. Der Zeitgewinn durch den schnellen Durchlauf ist oft wertvoller als die 10% zusätzliche Platzersparnis durch XZ.

# Story 2: “Das korrupte Archiv”

Symptom: gunzip meldet trailing garbage ignored oder CRC error. Ursache: Die Datei wurde während des Komprimierens verändert oder der Download war unvollständig. Lösung: Prüfen Sie die Datei mit gzip -t <file>. Falls korrupt, ist eine Wiederherstellung bei Gzip fast unmöglich. Bzip2 bietet hier mit bzip2recover bessere Chancen, Teile der Daten zu retten.


# 6. Fazit & Empfehlung

  • Wahl: Nutzen Sie Gzip für alles, was schnell gehen muss (Logs).
  • Wahl: Nutzen Sie XZ für statische Inhalte (Software-Images), die oft gelesen, aber selten geschrieben werden.
  • Best Practice: Behalten Sie die Originaldatei immer mit -k, bis Sie die Integrität der Kompression geprüft haben.

# Anhang: Cheatsheet

Aufgabe Gzip Bzip2 XZ
Komprimieren gzip bzip2 xz
Entpacken gunzip bunzip2 unxz
Inhalts-Vorschau zcat bzcat xzcat
Integritätstest gzip -t bzip2 -t xz -t
Kompressionslevel -1 ... -9 -1 ... -9 -0 ... -9
Original behalten N/A (Standard: Del) -k -k
Mehrere Kerne pigz (Tool) pbzip2 (Tool) xz -T0