gzip: bestanden comprimeren in Linux, gzip uitpakken, gunzip en zcat gebruiken
gzip is de Linux-opdracht die één bestand comprimeert tot een .gz-bestand; om uit te pakken voeg je -d toe aan dezelfde opdracht of gebruik je gunzip. Op een AlmaLinux 9-server kromp een toegangslog van 31.878 bytes tot 4.424 bytes, en na het uitpakken waren de oorspronkelijke grootte en wijzigingstijd weer terug.
De uitvoer hieronder komt uit een testmap op een AlmaLinux 9.8-server, uitgevoerd als root, met tijden in UTC. De toegangslogs, notities en configuratiebestanden zijn voorbeeldbestanden die voor de test zijn gemaakt, en de IP-adressen in de logs zijn voorbeeldwaarden voor documentatie.
1️⃣ De gzip-opdracht gebruiken
In de testmap staan twee toegangslogs, twee notitiebestanden, een config-map met configuratiebestanden en een lege restore-map.
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 restoreZet je een bestandsnaam achter gzip, dan wordt dat bestand een gecomprimeerd bestand met .gz achter de naam. De opdracht hieronder comprimeert access.log en toont niets als hij klaar is.
gzip access.logNa het comprimeren laat ls -l geen access.log meer zien, alleen access.log.gz. Het log van 31.878 bytes werd 4.424 bytes, en de wijzigingstijd is nog die van het oorspronkelijke bestand.
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.gzMet -v toont gzip per bestand het verkleiningspercentage en de nieuwe bestandsnaam. De [81.5%] op de regel van readme.txt is hoeveel kleiner het bestand werd ten opzichte van de oorspronkelijke grootte, en [replaced with] betekent dat het oorspronkelijke bestand is vervangen door het .gz-bestand.
gzip -v readme.txtreadme.txt: 81.5% -- replaced with readme.txt.gzWil je het oorspronkelijke bestand houden, voeg dan -k toe. Comprimeer je memo.txt met -k, dan blijven memo.txt en memo.txt.gz naast elkaar staan.
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.gzDe memo.txt van 45 bytes werd na het comprimeren zelfs groter, 71 bytes. Volgens de officiële handleiding comprimeert gzip ook als het resultaat groter is dan het origineel, en bewaart het de oorspronkelijke bestandsnaam en tijd in het gecomprimeerde bestand.
Geef je meerdere bestanden tegelijk op, dan krijgt elk bestand een eigen .gz-bestand. Comprimeer je de twee configuratiebestanden in de config-map, dan krijg je twee bestanden: app.conf.gz en 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 uitpakken
Pak je access.log.gz uit met -d, dan verschijnt er geen uitvoer, is access.log terug en blijft access.log.gz niet over.
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.logHet teruggezette access.log is 31.878 bytes, en de wijzigingstijd is dezelfde als vóór het comprimeren: Oct 28 23:50.
gunzip doet hetzelfde als gzip -d. Met -k pakt het uit en houdt het het gecomprimeerde bestand, en [created] op de regel van -v betekent dat er een nieuw bestand is gemaakt zonder het .gz-bestand te verwijderen.
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 heeft geen optie om de doelmap te kiezen. Om naar een andere map uit te pakken, stuur je met -c de uitgepakte inhoud naar de standaarduitvoer en zet je het pad van het nieuwe bestand achter [>]. De opdracht hieronder pakt memo.txt.gz uit naar memo.txt in de restore-map.
gzip -dc memo.txt.gz > restore/memo.txtls -l restore/total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txtBij uitpakken met -c blijft memo.txt.gz gewoon staan. De nieuwe restore/memo.txt heeft als wijzigingstijd Oct 29 00:19, het moment waarop het bestand werd gemaakt.
3️⃣ Opties van de gzip-opdracht
-l toont op één regel, zonder uit te pakken, de gecomprimeerde grootte, de oorspronkelijke grootte, het verkleiningspercentage en de naam na het uitpakken. Comprimeer je access.log opnieuw met -k en controleer je het met -l, dan ziet het er zo uit.
gzip -k access.loggzip -l access.log.gz compressed uncompressed ratio uncompressed_name
4424 31878 86.2% access.logMet -v erbij komen vooraan de compressiemethode (defla, kort voor deflate), de CRC van de oorspronkelijke gegevens en de datum en tijd van het oorspronkelijke bestand.
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 controleert alleen of het gecomprimeerde bestand heel is en stopt dan. Samen met -v verschijnt [OK] achter elk bestand zonder problemen.
gzip -tv access.log.gzaccess.log.gz: OKDe cijfers -1 tot -9 zijn het compressieniveau, en volgens de officiële handleiding is -6 de standaard. Hetzelfde access.log werd drie keer met -c gecomprimeerd en de groottes werden vergeleken met wc -c.
gzip -c -1 access.log | wc -c5564gzip -c -6 access.log | wc -c4424gzip -c -9 access.log | wc -c4164| Compressieniveau | .gz-grootte | Ten opzichte van origineel |
|---|---|---|
| Origineel bestand (access.log) | 31.878 bytes | 100% |
| -1 (snelst) | 5.564 bytes | 17.5% |
| -6 (standaard) | 4.424 bytes | 13.9% |
| -9 (kleinst) | 4.164 bytes | 13.1% |
-9 was 260 bytes kleiner dan de standaard, en -1 was 1.140 bytes groter dan de standaard.
Geef je alleen een mapnaam op, dan verschijnt [is a directory -- ignored] en wordt de map overgeslagen.
gunzip configgzip: config is a directory -- ignoredOm alle bestanden in een map te verwerken, voeg je -r toe. Pak je de config-map, waarin de twee configuratiebestanden waren gecomprimeerd, uit met gunzip -r, dan worden beide bestanden na elkaar uitgepakt.
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 comprimeert of pakt de bestanden in een map één voor één apart uit en voegt niet meerdere bestanden samen tot één. Wil je een map tot één gecomprimeerd bestand maken, gebruik dan de tar-opdracht, die bundelt en tegelijk comprimeert. Comprimeer je de config-map met tar -czf, dan komen de map en beide bestanden in één config.tar.gz terecht.
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📌 Belangrijkste opties: resultaten uit dit artikel
| Optie | Taak | Resultaat in dit artikel | |
|---|---|---|---|
| -c | Stuurt het resultaat naar de standaarduitvoer en laat het oorspronkelijke bestand ongemoeid | De uitvoer van -dc doorgestuurd naar restore/memo.txt gaf een memo.txt van 45 bytes | |
| -d | Uitpakken (zelfde als gunzip) | access.log.gz verdwijnt en access.log van 31878 bytes is terug | |
| -k | Houdt het oorspronkelijke bestand na comprimeren of uitpakken | memo.txt (45 bytes) en memo.txt.gz (71 bytes) staan naast elkaar | |
| -v | Toont per bestand het verkleiningspercentage en de nieuwe bestandsnaam | readme.txt: 81.5% -- replaced with readme.txt.gz | |
| -l | Toont een lijst met grootte, percentage en naam na uitpakken van gecomprimeerde bestanden | Gecomprimeerde grootte 4424, oorspronkelijke grootte 31878, percentage 86.2%, naam access.log | |
| -t | Controleert of het gecomprimeerde bestand heel is | Met -tv access.log.gz: OK, en voor broken.gz met afgekapt einde unexpected end of file | |
| -r | Comprimeert of pakt alle bestanden in een map uit | Eén gunzip -rv config pakt config/app.conf.gz en config/site.conf.gz uit | |
| -f | Overschrijft zonder te vragen, ook als er een bestand met dezelfde naam is | Zonder vraag overschreven: geen memo.txt meer, alleen memo.txt.gz (71 bytes) | |
| -1 ~ -9 | Compressieniveau (-1 snelst, -9 kleinst, standaard -6) | Uitvoer gecomprimeerd met -1, -6 en -9, geteld met wc -c: 5564, 4424, 4164 |
📎 Andere opties: volgens de officiële handleiding
| Optie | Taak | |
|---|---|---|
| -N | Bewaart bij comprimeren de oorspronkelijke bestandsnaam en tijd (standaard bij comprimeren) en zet bij uitpakken de bewaarde naam en tijd terug | |
| -n | Bewaart bij comprimeren de oorspronkelijke bestandsnaam en tijd niet, en gebruikt bij uitpakken de naam zonder .gz (standaard bij uitpakken) | |
| -q | Toont geen enkele waarschuwing | |
| -S achtervoegsel | Comprimeert met het opgegeven achtervoegsel in plaats van .gz, en zoekt bij uitpakken eerst naar dat achtervoegsel | |
| --rsyncable | Comprimeert zo dat bij het synchroniseren van gecomprimeerde bestanden met een andere server via rsync alleen de gewijzigde delen worden verstuurd |
🔲 Simulator van de gzip-opdracht
In de simulator hieronder kun je zelf de opdrachten typen om met gzip te comprimeren, uit te pakken en de inhoud te bekijken met zcat en zgrep.
4️⃣ De inhoud van gzip-bestanden bekijken
Oude logs die met een datum in de naam worden bewaard, nemen minder ruimte in als je ze met gzip comprimeert. De opdracht hieronder comprimeert access.log-20261027, het log van de vorige dag.
gzip access.log-20261027Een gecomprimeerd log toon je met zcat op het scherm zonder het uit te pakken. zcat is dezelfde opdracht als gunzip -c (volgens de officiële handleiding), dus het .gz-bestand blijft staan.
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 13813De uitvoer van zcat kun je via een pipe aan andere opdrachten doorgeven, en geteld met wc -l heeft dit log 600 regels.
zcat access.log-20261027.gz | wc -l600Om in een gecomprimeerd log naar bepaalde tekst te zoeken, gebruik je zgrep. Met -c verschijnt alleen het aantal regels met [ 404 ]; wil je de regels zelf zien, voer het dan uit zonder -c.
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 414Krijgt zcat een niet-gecomprimeerd bestand, dan toont het [not in gzip format] en stopt het.
zcat access.log | head -1
gzip: access.log: not in gzip formatzgrep leest ook niet-gecomprimeerde bestanden zoals ze zijn, zodat je het huidige log en de gecomprimeerde oude logs in één keer kunt doorzoeken. Bij twee of meer bestanden staat de bestandsnaam vóór het aantal regels.
zgrep -c wp-login.php access.log access.log-20261027.gzaccess.log:36
access.log-20261027.gz:525️⃣ gzip-fouten
Comprimeer je een bestand dat al op .gz eindigt opnieuw, dan verschijnt [already has .gz suffix -- unchanged] en blijft het bestand ongewijzigd.
gzip access.log.gzgzip: access.log.gz already has .gz suffix -- unchangedOmgekeerd verschijnt [unknown suffix -- ignored] als je een bestand dat niet op .gz eindigt met -d uitpakt.
gzip -d memo.txtgzip: memo.txt: unknown suffix -- ignoredEen bestand dat alleen .gz heet maar niet met gzip is gecomprimeerd, eindigt met [not in gzip format]. Deze melding verscheen toen het tekstbestand memo.txt als notgzip.gz werd gekopieerd en uitgepakt.
cp memo.txt notgzip.gzgzip -d notgzip.gz
gzip: notgzip.gz: not in gzip formatEen .gz-bestand waarvan het einde ontbreekt, bijvoorbeeld door een afgebroken download, eindigt met [unexpected end of file]. Dit is het resultaat van een controle met -t van broken.gz, waarin alleen de eerste 2.000 bytes van een gecomprimeerd oud log zijn bewaard.
head -c 2000 access.log-20261027.gz > broken.gzgzip -t broken.gz
gzip: broken.gz: unexpected end of fileZelfs uit een afgekapt bestand haalt zcat de inhoud tot aan het afbreekpunt. Van het log van 600 regels bleven er 162 over in restore/broken.log, en ook de officiële handleiding raadt aan het begin van een beschadigd gecomprimeerd bestand met zcat te redden.
zcat broken.gz > restore/broken.logwc -l restore/broken.log
gzip: broken.gz: unexpected end of file
162 restore/broken.logBestaat er al een bestand met dezelfde naam als het .gz-bestand dat gemaakt wordt, dan vraagt gzip of het moet overschrijven. Typ je n, dan eindigt de opdracht met [not overwritten] zonder iets te veranderen.
gzip memo.txtgzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
not overwrittenMet -f overschrijft gzip meteen zonder te vragen. Omdat -k niet is toegevoegd, verdwijnt memo.txt en blijft alleen memo.txt.gz over.
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.gzDit zijn de foutmeldingen die bij het werken met compressie verschenen, en wat je daarna controleert.
| Uitvoer | Betekenis | Daarna controleren |
|---|---|---|
| already has .gz suffix -- unchanged | Het bestand eindigt al op .gz en wordt niet opnieuw gecomprimeerd | Of je de naam van het te comprimeren originele bestand hebt opgegeven |
| unknown suffix -- ignored | Geprobeerd een bestand uit te pakken dat niet op .gz eindigt | De naam van het .gz-bestand met ls |
| not in gzip format | Heet .gz maar is niet met gzip gecomprimeerd | Het werkelijke formaat (zip, tar) en de bijpassende opdracht |
| unexpected end of file | Het einde van het gecomprimeerde bestand ontbreekt | Grootte vergelijken met het origineel en opnieuw downloaden · het begin redden met zcat |
| already exists; do you wish to overwrite | Er bestaat al een bestand met dezelfde naam als het te maken bestand | y of -f als overschrijven mag · -c met een andere naam om het te houden |
| is a directory -- ignored | Mapnaam opgegeven in plaats van een bestand | -r voor de bestanden in een map · tar om ze tot één te bundelen |
🔢 FAQ & aanbevolen content
Zoeken
Linux grep-commando
De grep-opdracht om een tekenreeks te zoeken in tekstbestanden zoals logs, met voorbeelden die hem via pipes combineren met tail en find.
Schijf
du-commando: schijfruimte van bestanden controleren
De du-opdracht om te controleren hoeveel schijfruimte bestanden en mappen innemen.
Bestanden bekijken
Linux head-commando en tail-commando
De opdrachten head en tail om de eerste en laatste regels van een bestand te bekijken, vaak gebruikt om toegangslogs van een server te controleren.
ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.