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
tarDateien 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 |