gzip — Dateien schnell komprimieren

Praxis-Guide zu gzip: Dateien mit LZ77 komprimieren, entpacken und prüfen — plus zcat, zgrep, zless und pigz für den Alltag.

gzip ist das klassische Kompressionswerkzeug der Unix-Welt und komprimiert einzelne Dateien mit dem schnellen LZ77-Verfahren. Du nutzt es täglich für Logs, Datenbank-Dumps oder als Backend von tar. Ein wichtiger Stolperstein: gzip ersetzt standardmäßig die Originaldatei durch die .gz-Version – ohne -k ist das Original danach weg. Dieser Guide zeigt dir Komprimieren, Entpacken und Prüfen sowie die Helfer zcat, zgrep und das parallele pigz.

Komprimieren

gzip <file> — Komprimiert eine Datei (ersetzt das Original durch die .gz-Version).

gzip access.log

gzip -k <file> — Komprimiert und behält die Originaldatei.

gzip -k access.log

gzip -<level> <file> — Komprimiert mit einer bestimmten Stufe (1=schnellste, 9=beste Kompression).

gzip -9 access.log

gzip -r <directory> — Komprimiert rekursiv alle Dateien in einem Verzeichnis (jede Datei einzeln).

gzip -r /var/log/old/

gzip -c <file> > <output.gz> — Komprimiert nach stdout und erlaubt so einen eigenen Ausgabenamen.

gzip -c data.json > data.json.gz

Dekomprimieren

gzip -d <file.gz> — Entpackt eine gzip-komprimierte Datei.

gzip -d access.log.gz

gunzip <file.gz> — Entpackt eine gzip-Datei (identisch zu gzip -d).

gunzip access.log.gz

gzip -dk <file.gz> — Entpackt und behält die komprimierte Datei.

gzip -dk access.log.gz

gunzip -r <directory> — Entpackt rekursiv alle .gz-Dateien in einem Verzeichnis.

gunzip -r /var/log/old/

gzip -dc <file.gz> > <output> — Entpackt nach stdout mit eigenem Ausgabenamen.

gzip -dc backup.sql.gz > backup.sql

Informationen & Test

gzip -l <file.gz> — Zeigt Kompressions-Infos an: Größe komprimiert/unkomprimiert, Verhältnis, Name.

gzip -l access.log.gz

gzip -t <file.gz> — Prüft die Integrität einer komprimierten Datei.

gzip -t backup.sql.gz

gzip -v <file> — Ausführlicher Modus. Zeigt Dateiname und Kompressionsverhältnis.

gzip -v access.log

Stapelverarbeitung

gzip *.log — Komprimiert alle .log-Dateien im aktuellen Verzeichnis.

gzip *.log

gunzip *.gz — Entpackt alle .gz-Dateien im aktuellen Verzeichnis.

gunzip *.gz

find . -name '*.log' -exec gzip {} \; — Findet und komprimiert rekursiv alle .log-Dateien.

find /var/log -name '*.log' -exec gzip {} \;

find . -name '*.gz' -mtime +30 -delete — Löscht komprimierte Dateien, die älter als 30 Tage sind.

find /var/log -name '*.gz' -mtime +30 -delete

Verwandte Werkzeuge

zcat <file.gz> — Zeigt den Inhalt einer gzip-Datei an, ohne sie zu entpacken.

zcat access.log.gz

zgrep <pattern> <file.gz> — Sucht in einer gzip-Datei, ohne sie zu entpacken.

zgrep "404" access.log.gz

zless <file.gz> — Blättert mit less durch eine gzip-Datei.

zless access.log.gz

zdiff <file1.gz> <file2.gz> — Vergleicht zwei gzip-Dateien, ohne sie zu entpacken.

zdiff old.log.gz new.log.gz

pigz <file> — Parallele gzip-Kompression über mehrere CPU-Kerne.

pigz largefile.sql

pigz -d <file.gz> — Parallele gzip-Dekompression.

pigz -d largefile.sql.gz

Fazit

gzip ist schnell, überall verfügbar und ideal für einzelne Dateien wie Logs oder Dumps. Denk immer daran, dass es das Original ersetzt – nutze -k, wenn du es behalten willst, und gzip -t, bevor du dich auf ein Archiv verlässt. gzip kennt keinen Container für mehrere Dateien: Willst du ein ganzes Verzeichnis in eine Datei packen, kombinierst du es mit tar (tar czf), bei großen Datenmengen lohnt das parallele pigz.

Verwandte Kommandos

  • 7z – Hochkomprimierender Packer mit eigenem .7z-Format
  • tar – bündelt viele Dateien zu einem Archiv, oft mit gzip kombiniert
  • zip – plattformübergreifendes Archivformat mit Kompression in einem Schritt