gzip: Dateien unter Linux komprimieren, gzip entpacken, gunzip und zcat verwenden
gzip ist der Linux-Befehl, der eine einzelne Datei zu einer .gz-Datei komprimiert; zum Entpacken hängst du an denselben Befehl -d an oder verwendest gunzip. Auf einem AlmaLinux-9-Server schrumpfte ein Zugriffslog von 31.878 Byte auf 4.424 Byte, und nach dem Entpacken waren die ursprüngliche Größe und Änderungszeit wieder da.
Die Ausgaben unten stammen aus einem Testordner auf einem AlmaLinux-9.8-Server, ausgeführt als root, mit Zeiten in UTC. Zugriffslogs, Notizen und Konfigurationsdateien sind für den Test angelegte Beispieldateien, und die IP-Adressen in den Logs sind Beispielwerte für die Dokumentation.
1️⃣ So verwendest du den gzip-Befehl
Im Testordner liegen zwei Zugriffslogs, zwei Notizdateien, ein config-Ordner mit Konfigurationsdateien und ein leerer restore-Ordner.
ls -ltotal 88
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log
-rw-r--r-- 1 root root 47748 Oct 27 23:59 access.log-20261027
drwxr-xr-x 2 root root 39 Oct 29 00:19 config
-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
drwxr-xr-x 2 root root 6 Oct 29 00:19 restoreSchreibst du hinter gzip einen Dateinamen, wird diese Datei zu einer komprimierten Datei, an deren Namen .gz angehängt ist. Der Befehl unten komprimiert access.log und gibt nach dem Ende nichts aus.
gzip access.logNach dem Komprimieren zeigt ls -l kein access.log mehr, sondern nur noch access.log.gz. Aus dem 31.878 Byte großen Log wurden 4.424 Byte, und die Änderungszeit ist noch die der Originaldatei.
ls -l access.log access.log.gzls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gzMit -v zeigt gzip für jede Datei den Verkleinerungsanteil und den neuen Dateinamen. Die [81.5%] in der Zeile von readme.txt geben an, um wie viel die Datei gegenüber der Originalgröße kleiner wurde, und [replaced with] bedeutet, dass die Originaldatei durch die .gz-Datei ersetzt wurde.
gzip -v readme.txtreadme.txt: 81.5% -- replaced with readme.txt.gzWillst du die Originaldatei behalten, hängst du -k an. Komprimierst du memo.txt mit -k, bleiben memo.txt und memo.txt.gz nebeneinander liegen.
gzip -k memo.txtls -l memo.txt memo.txt.gz-rw-r--r-- 1 root root 45 Oct 28 14:30 memo.txt
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gzDie 45 Byte große memo.txt wurde nach dem Komprimieren sogar größer, nämlich 71 Byte. Laut offiziellem Handbuch komprimiert gzip auch dann, wenn das Ergebnis größer als das Original ist, und speichert in der komprimierten Datei den ursprünglichen Dateinamen und die Zeit mit.
Gibst du mehrere Dateien auf einmal an, entsteht für jede Datei eine eigene .gz-Datei. Komprimierst du die beiden Konfigurationsdateien im config-Ordner, erhältst du die zwei Dateien app.conf.gz und site.conf.gz.
gzip -v config/app.conf config/site.confconfig/app.conf: 78.7% -- replaced with config/app.conf.gz
config/site.conf: 87.7% -- replaced with config/site.conf.gzls -l config/total 8
-rw-r--r-- 1 root root 206 Oct 20 11:00 app.conf.gz
-rw-r--r-- 1 root root 93 Oct 20 11:05 site.conf.gz2️⃣ gzip entpacken
Entpackst du access.log.gz mit -d, erscheint keine Ausgabe, access.log ist wieder da und access.log.gz bleibt nicht übrig.
gzip -d access.log.gzls -l access.log access.log.gzls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.logDas wiederhergestellte access.log ist 31.878 Byte groß, und seine Änderungszeit ist wie vor dem Komprimieren Oct 28 23:50.
gunzip erledigt dieselbe Aufgabe wie gzip -d. Mit -k entpackt es und behält dabei die komprimierte Datei, und [created] in der -v-Zeile bedeutet, dass eine neue Datei angelegt wurde, ohne die .gz-Datei zu löschen.
gunzip -kv readme.txt.gzreadme.txt.gz: 81.5% -- created readme.txtls -l readme.txt readme.txt.gz-rw-r--r-- 1 root root 426 Oct 27 09:10 readme.txt
-rw-r--r-- 1 root root 108 Oct 27 09:10 readme.txt.gzgzip hat keine Option für den Zielordner. Um in einen anderen Ordner zu entpacken, schickst du den entpackten Inhalt mit -c an die Standardausgabe und schreibst den Pfad der neuen Datei hinter [>]. Der Befehl unten entpackt memo.txt.gz in die Datei memo.txt im restore-Ordner.
gzip -dc memo.txt.gz > restore/memo.txtls -l restore/total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txtBeim Entpacken mit -c bleibt memo.txt.gz erhalten. Die neue restore/memo.txt hat als Änderungszeit Oct 29 00:19, den Zeitpunkt, an dem die Datei angelegt wurde.
3️⃣ Optionen des gzip-Befehls
-l gibt, ohne die komprimierte Datei zu entpacken, in einer Zeile die komprimierte Größe, die Originalgröße, den Verkleinerungsanteil und den Namen nach dem Entpacken aus. Komprimierst du access.log noch einmal mit -k und prüfst es mit -l, sieht das so aus.
gzip -k access.loggzip -l access.log.gz compressed uncompressed ratio uncompressed_name
4424 31878 86.2% access.logMit zusätzlichem -v kommen vorne die Kompressionsmethode (defla, kurz für deflate), die CRC der Originaldaten sowie Datum und Uhrzeit der Originaldatei hinzu.
gzip -lv access.log.gzmethod crc date time compressed uncompressed ratio uncompressed_name
defla b49b41c4 Oct 28 23:50 4424 31878 86.2% access.log-t prüft nur, ob die komprimierte Datei unbeschädigt ist, und endet dann. Zusammen mit -v steht hinter jeder fehlerfreien Datei [OK].
gzip -tv access.log.gzaccess.log.gz: OKDie Zahlen -1 bis -9 sind die Kompressionsstufe, laut offiziellem Handbuch ist -6 der Standard. Dasselbe access.log wurde dreimal mit -c komprimiert und die Größen mit wc -c verglichen.
gzip -c -1 access.log | wc -c5564gzip -c -6 access.log | wc -c4424gzip -c -9 access.log | wc -c4164| Kompressionsstufe | .gz-Größe | Anteil der Originalgröße |
|---|---|---|
| Originaldatei (access.log) | 31.878 Byte | 100% |
| -1 (am schnellsten) | 5.564 Byte | 17.5% |
| -6 (Standard) | 4.424 Byte | 13.9% |
| -9 (am kleinsten) | 4.164 Byte | 13.1% |
-9 war 260 Byte kleiner als der Standard, und -1 war 1.140 Byte größer als der Standard.
Gibst du nur einen Ordnernamen an, erscheint [is a directory -- ignored], und der Ordner wird übersprungen.
gunzip configgzip: config is a directory -- ignoredUm alle Dateien in einem Ordner zu bearbeiten, hängst du -r an. Entpackst du den config-Ordner, in dem die beiden Konfigurationsdateien komprimiert wurden, mit gunzip -r, werden beide Dateien nacheinander entpackt.
gunzip -rv configconfig/app.conf.gz: 78.7% -- replaced with config/app.conf
config/site.conf.gz: 87.7% -- replaced with config/site.confls -l config/total 8
-rw-r--r-- 1 root root 840 Oct 20 11:00 app.conf
-rw-r--r-- 1 root root 528 Oct 20 11:05 site.conf-r komprimiert oder entpackt die Dateien eines Ordners einzeln und fasst nicht mehrere Dateien zu einer zusammen. Um einen Ordner in eine einzige komprimierte Datei zu verwandeln, nimmst du den tar-Befehl, der bündelt und dabei gleich komprimiert. Komprimierst du den config-Ordner mit tar -czf, landen der Ordner und beide Dateien in einer einzigen config.tar.gz.
tar -czf config.tar.gz configtar -tzvf config.tar.gzdrwxr-xr-x root/root 0 2026-10-29 00:19 config/
-rw-r--r-- root/root 840 2026-10-20 11:00 config/app.conf
-rw-r--r-- root/root 528 2026-10-20 11:05 config/site.conf📌 Wichtige Optionen: Ergebnisse aus diesem Artikel
| Option | Was es tut | Ergebnis in diesem Artikel | |
|---|---|---|---|
| -c | Gibt das Ergebnis auf der Standardausgabe aus und lässt die Originaldatei unverändert | Die Ausgabe von -dc nach restore/memo.txt umgeleitet ergab eine 45 Byte große memo.txt | |
| -d | Entpacken (wie gunzip) | access.log.gz verschwindet, und access.log mit 31878 Byte ist wieder da | |
| -k | Behält die Originaldatei nach dem Komprimieren oder Entpacken | memo.txt (45 Byte) und memo.txt.gz (71 Byte) liegen nebeneinander | |
| -v | Gibt für jede Datei den Verkleinerungsanteil und den neuen Dateinamen aus | readme.txt: 81.5% -- replaced with readme.txt.gz | |
| -l | Listet Größe, Anteil und Namen nach dem Entpacken komprimierter Dateien auf | Komprimierte Größe 4424, Originalgröße 31878, Anteil 86.2%, Name access.log | |
| -t | Prüft, ob die komprimierte Datei unbeschädigt ist | Mit -tv access.log.gz: OK, für broken.gz mit abgeschnittenem Ende unexpected end of file | |
| -r | Komprimiert oder entpackt alle Dateien in einem Ordner | Ein einziges gunzip -rv config entpackt config/app.conf.gz und config/site.conf.gz | |
| -f | Überschreibt ohne Rückfrage, auch wenn eine Datei mit demselben Namen existiert | Ohne Rückfrage überschrieben: memo.txt ist weg, nur memo.txt.gz (71 Byte) bleibt | |
| -1 ~ -9 | Kompressionsstufe (-1 am schnellsten, -9 am kleinsten, Standard -6) | Mit -1, -6 und -9 komprimierte Ausgaben mit wc -c gezählt: 5564, 4424, 4164 |
📎 Weitere Optionen: laut offiziellem Handbuch
| Option | Was es tut | |
|---|---|---|
| -N | Speichert beim Komprimieren den ursprünglichen Dateinamen und die Zeit (Standard beim Komprimieren) und stellt beim Entpacken den gespeicherten Namen und die Zeit wieder her | |
| -n | Speichert beim Komprimieren den ursprünglichen Dateinamen und die Zeit nicht und verwendet beim Entpacken den Namen ohne .gz (Standard beim Entpacken) | |
| -q | Gibt keinerlei Warnungen aus | |
| -S Endung | Komprimiert mit der angegebenen Endung statt .gz und sucht beim Entpacken zuerst nach dieser Endung | |
| --rsyncable | Komprimiert so, dass beim Abgleich komprimierter Dateien per rsync mit einem anderen Server nur die geänderten Teile übertragen werden |
🔲 gzip-Befehl-Simulator
Im Simulator unten kannst du selbst eintippen, wie du mit gzip komprimierst, entpackst und den Inhalt mit zcat und zgrep ansiehst.
4️⃣ Inhalt von gzip-Dateien ansehen
Ältere Logs, die mit Datum im Namen aufbewahrt werden, belegen weniger Platz, wenn du sie mit gzip komprimierst. Der Befehl unten komprimiert access.log-20261027, das Log vom Vortag.
gzip access.log-20261027Ein komprimiertes Log gibst du mit zcat auf dem Bildschirm aus, ohne es zu entpacken. zcat ist derselbe Befehl wie gunzip -c (laut offiziellem Handbuch), daher bleibt die .gz-Datei erhalten.
zcat access.log-20261027.gz | head -3192.0.2.50 - - [27/Oct/2026:00:00:00 +0000] GET / HTTP/1.1 200 15929
192.0.2.54 - - [27/Oct/2026:00:00:07 +0000] GET / HTTP/1.1 200 17699
192.0.2.4 - - [27/Oct/2026:00:00:14 +0000] GET / HTTP/1.1 200 13813Die Ausgabe von zcat lässt sich per Pipe an andere Befehle weitergeben, und mit wc -l gezählt hat dieses Log 600 Zeilen.
zcat access.log-20261027.gz | wc -l600Um in einem komprimierten Log nach bestimmtem Text zu suchen, verwendest du zgrep. Mit -c erscheint nur die Zahl der Zeilen, die [ 404 ] enthalten; um die Zeilen selbst zu sehen, führst du es ohne -c aus.
zgrep -c ' 404 ' access.log-20261027.gz37zgrep ' 404 ' access.log-20261027.gz | head -3192.0.2.23 - - [27/Oct/2026:00:02:06 +0000] GET /old-page-6/ HTTP/1.1 404 229
192.0.2.38 - - [27/Oct/2026:00:04:40 +0000] GET /old-page-2/ HTTP/1.1 404 217
192.0.2.22 - - [27/Oct/2026:00:07:42 +0000] GET /old-page-6/ HTTP/1.1 404 414Bekommt zcat eine nicht komprimierte Datei, gibt es [not in gzip format] aus und bricht ab.
zcat access.log | head -1
gzip: access.log: not in gzip formatzgrep liest auch nicht komprimierte Dateien direkt, sodass du das aktuelle Log und die komprimierten älteren Logs in einem Durchgang durchsuchen kannst. Bei zwei oder mehr Dateien steht vor der Zeilenzahl der Dateiname.
zgrep -c wp-login.php access.log access.log-20261027.gzaccess.log:36
access.log-20261027.gz:525️⃣ gzip-Fehler
Komprimierst du eine Datei, die bereits auf .gz endet, noch einmal, erscheint [already has .gz suffix -- unchanged], und die Datei bleibt unverändert.
gzip access.log.gzgzip: access.log.gz already has .gz suffix -- unchangedUmgekehrt erscheint [unknown suffix -- ignored], wenn du eine Datei, die nicht auf .gz endet, mit -d entpackst.
gzip -d memo.txtgzip: memo.txt: unknown suffix -- ignoredEine Datei, die nur .gz heißt, aber nicht mit gzip komprimiert wurde, endet mit [not in gzip format]. Diese Meldung erschien, als die Textdatei memo.txt unter dem Namen notgzip.gz kopiert und entpackt wurde.
cp memo.txt notgzip.gzgzip -d notgzip.gz
gzip: notgzip.gz: not in gzip formatEine .gz-Datei, deren Ende abgeschnitten ist, etwa durch einen abgebrochenen Download, endet mit [unexpected end of file]. Das ist das Ergebnis, als broken.gz, das nur die ersten 2.000 Byte eines komprimierten älteren Logs enthielt, mit -t geprüft wurde.
head -c 2000 access.log-20261027.gz > broken.gzgzip -t broken.gz
gzip: broken.gz: unexpected end of fileSelbst aus einer abgeschnittenen Datei holt zcat den Inhalt bis zur Abbruchstelle heraus. Von dem 600 Zeilen langen Log blieben 162 Zeilen in restore/broken.log, und auch das offizielle Handbuch rät, den Anfang einer beschädigten komprimierten Datei mit zcat zu retten.
zcat broken.gz > restore/broken.logwc -l restore/broken.log
gzip: broken.gz: unexpected end of file
162 restore/broken.logGibt es schon eine Datei mit demselben Namen wie die zu erstellende .gz-Datei, fragt gzip, ob sie überschrieben werden soll. Gibst du n ein, endet der Befehl mit [not overwritten], ohne etwas zu ändern.
gzip memo.txtgzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
not overwrittenMit -f überschreibt gzip sofort ohne Rückfrage. Da -k nicht angegeben wurde, verschwindet memo.txt, und nur memo.txt.gz bleibt.
gzip -f memo.txtls -l memo.txt memo.txt.gzls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gzDie Fehlermeldungen, die beim Arbeiten mit der Kompression auftraten, und was du als Nächstes prüfst, sind folgende.
| Ausgabe | Bedeutung | Als Nächstes prüfen |
|---|---|---|
| already has .gz suffix -- unchanged | Die Datei endet bereits auf .gz und wird nicht erneut komprimiert | Ob du den Namen der zu komprimierenden Originaldatei angegeben hast |
| unknown suffix -- ignored | Es wurde versucht, eine Datei zu entpacken, die nicht auf .gz endet | Den Namen der .gz-Datei mit ls |
| not in gzip format | Heißt .gz, wurde aber nicht mit gzip komprimiert | Das tatsächliche Format (zip, tar) und den passenden Befehl |
| unexpected end of file | Das Ende der komprimierten Datei ist abgeschnitten | Größe mit dem Original vergleichen und neu herunterladen · den Anfang mit zcat retten |
| already exists; do you wish to overwrite | Eine Datei mit dem Namen der zu erstellenden Datei existiert bereits | y oder -f, wenn Überschreiben in Ordnung ist · zum Behalten -c mit anderem Namen |
| is a directory -- ignored | Ordnername statt Dateiname angegeben | -r für die Dateien in einem Ordner · tar, um sie zu einer zu bündeln |
🔢 FAQ & empfohlene Inhalte
Suche
Linux-grep-Befehl
Der grep-Befehl, mit dem du in Textdateien wie Logs nach einer Zeichenfolge suchst, mit Beispielen, die ihn per Pipe mit tail und find verbinden.
Festplatte
du-Befehl: Speicherplatz von Dateien prüfen
Der du-Befehl, mit dem du prüfst, wie viel Speicherplatz Dateien und Verzeichnisse belegen.
Dateien anzeigen
Linux-Befehle head und tail
Die Befehle head und tail zum Anzeigen der ersten und letzten Zeilen einer Datei, oft genutzt, um Server-Zugriffslogs zu prüfen.
ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.