gzip: bestanden comprimeren in Linux, gzip uitpakken, gunzip en zcat gebruiken

TestomgevingRHEL-familieAlmaLinux 9.8root-accountGecontroleerd op 2026-11-05
Commando's voor comprimeren · archiverengzipgunzipzcatLocatie/usr/bin/gzip
Bestanden comprimeren in Linux en gzip uitpakken

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

  • ↪️ Een bestand comprimeren en het origineel houden (-k)

In de testmap staan twee toegangslogs, twee notitiebestanden, een config-map met configuratiebestanden en een lege restore-map.

ls -l
total 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 restore

Zet 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.log

Na 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.gz
ls: cannot access 'access.log': No such file or directory
-rw-r--r-- 1 root root 4424 Oct 28 23:50 access.log.gz

Met -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.txt
readme.txt:	 81.5% -- replaced with readme.txt.gz

Wil 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.txt
ls -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.gz

De 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.conf
config/app.conf:	 78.7% -- replaced with config/app.conf.gz
config/site.conf:	 87.7% -- replaced with config/site.conf.gz
ls -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.gz

2️⃣ gzip uitpakken

  • ↪️ gzip -d en gunzip, uitpakken naar een andere map (-c)

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.gz
ls -l access.log access.log.gz
ls: cannot access 'access.log.gz': No such file or directory
-rw-r--r-- 1 root root 31878 Oct 28 23:50 access.log

Het 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.gz
readme.txt.gz:	 81.5% -- created readme.txt
ls -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.gz

gzip 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.txt
ls -l restore/
total 4
-rw-r--r-- 1 root root 45 Oct 29 00:19 memo.txt

Bij 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, -t, compressieniveau, -r

-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.log
gzip -l access.log.gz
         compressed        uncompressed  ratio uncompressed_name
               4424               31878  86.2% access.log

Met -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.gz
method  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.gz
access.log.gz:	 OK

De 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 -c
5564
gzip -c -6 access.log | wc -c
4424
gzip -c -9 access.log | wc -c
4164
Compressieniveau.gz-grootteTen opzichte van origineel
Origineel bestand (access.log)31.878 bytes100%
-1 (snelst)5.564 bytes17.5%
-6 (standaard)4.424 bytes13.9%
-9 (kleinst)4.164 bytes13.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 config
gzip: config is a directory -- ignored

Om 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 config
config/app.conf.gz:	 78.7% -- replaced with config/app.conf
config/site.conf.gz:	 87.7% -- replaced with config/site.conf
ls -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 config
tar -tzvf config.tar.gz
drwxr-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

OptieTaakResultaat in dit artikel
-cStuurt het resultaat naar de standaarduitvoer en laat het oorspronkelijke bestand ongemoeidDe uitvoer van -dc doorgestuurd naar restore/memo.txt gaf een memo.txt van 45 bytes
-dUitpakken (zelfde als gunzip)access.log.gz verdwijnt en access.log van 31878 bytes is terug
-kHoudt het oorspronkelijke bestand na comprimeren of uitpakkenmemo.txt (45 bytes) en memo.txt.gz (71 bytes) staan naast elkaar
-vToont per bestand het verkleiningspercentage en de nieuwe bestandsnaamreadme.txt: 81.5% -- replaced with readme.txt.gz
-lToont een lijst met grootte, percentage en naam na uitpakken van gecomprimeerde bestandenGecomprimeerde grootte 4424, oorspronkelijke grootte 31878, percentage 86.2%, naam access.log
-tControleert of het gecomprimeerde bestand heel isMet -tv access.log.gz: OK, en voor broken.gz met afgekapt einde unexpected end of file
-rComprimeert of pakt alle bestanden in een map uitEén gunzip -rv config pakt config/app.conf.gz en config/site.conf.gz uit
-fOverschrijft zonder te vragen, ook als er een bestand met dezelfde naam isZonder vraag overschreven: geen memo.txt meer, alleen memo.txt.gz (71 bytes)
-1 ~ -9Compressieniveau (-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

OptieTaak
-NBewaart bij comprimeren de oorspronkelijke bestandsnaam en tijd (standaard bij comprimeren) en zet bij uitpakken de bewaarde naam en tijd terug
-nBewaart bij comprimeren de oorspronkelijke bestandsnaam en tijd niet, en gebruikt bij uitpakken de naam zonder .gz (standaard bij uitpakken)
-qToont geen enkele waarschuwing
-S achtervoegselComprimeert met het opgegeven achtervoegsel in plaats van .gz, en zoekt bij uitpakken eerst naar dat achtervoegsel
--rsyncableComprimeert 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.

Simulator van de gzip-opdrachtgzip 1.12
[root@server work]#
Hij werkt alleen in de browser en comprimeert geen echte bestanden. Gecomprimeerde groottes zijn gemeten waarden, en voor inhoud die nieuw in de simulator wordt gemaakt gelden geschatte waarden. Met ↑↓ haal je eerdere opdrachten terug.

4️⃣ De inhoud van gzip-bestanden bekijken

  • ↪️ zcat · zgrep

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

Een 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 -3
192.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 13813

De 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 -l
600

Om 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.gz
37
zgrep ' 404 ' access.log-20261027.gz | head -3
192.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 414

Krijgt 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 format

zgrep 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.gz
access.log:36
access.log-20261027.gz:52

5️⃣ gzip-fouten

  • ↪️ not in gzip format en unexpected end of file

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.gz
gzip: access.log.gz already has .gz suffix -- unchanged

Omgekeerd verschijnt [unknown suffix -- ignored] als je een bestand dat niet op .gz eindigt met -d uitpakt.

gzip -d memo.txt
gzip: memo.txt: unknown suffix -- ignored

Een 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.gz
gzip -d notgzip.gz

gzip: notgzip.gz: not in gzip format

Een .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.gz
gzip -t broken.gz

gzip: broken.gz: unexpected end of file

Zelfs 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.log
wc -l restore/broken.log

gzip: broken.gz: unexpected end of file
162 restore/broken.log

Bestaat 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.txt
gzip: memo.txt.gz already exists; do you wish to overwrite (y or n)? n
	not overwritten

Met -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.txt
ls -l memo.txt memo.txt.gz
ls: cannot access 'memo.txt': No such file or directory
-rw-r--r-- 1 root root 71 Oct 28 14:30 memo.txt.gz

Dit zijn de foutmeldingen die bij het werken met compressie verschenen, en wat je daarna controleert.

UitvoerBetekenisDaarna controleren
already has .gz suffix -- unchangedHet bestand eindigt al op .gz en wordt niet opnieuw gecomprimeerdOf je de naam van het te comprimeren originele bestand hebt opgegeven
unknown suffix -- ignoredGeprobeerd een bestand uit te pakken dat niet op .gz eindigtDe naam van het .gz-bestand met ls
not in gzip formatHeet .gz maar is niet met gzip gecomprimeerdHet werkelijke formaat (zip, tar) en de bijpassende opdracht
unexpected end of fileHet einde van het gecomprimeerde bestand ontbreektGrootte vergelijken met het origineel en opnieuw downloaden · het begin redden met zcat
already exists; do you wish to overwriteEr bestaat al een bestand met dezelfde naam als het te maken bestandy of -f als overschrijven mag · -c met een andere naam om het te houden
is a directory -- ignoredMapnaam opgegeven in plaats van een bestand-r voor de bestanden in een map · tar om ze tot één te bundelen

🔢 FAQ & aanbevolen content

De config-map werd met tar gebundeld tot x.tar, met gzip -v gecomprimeerd en met gunzip -v uitgepakt: alleen de .gz-laag ging eraf en er bleef een x.tar van 10.240 bytes over. Om de gebundelde bestanden eruit te halen, moet je het nog een keer met tar uitpakken. Toen het opnieuw gecomprimeerde x.tar.gz met tar -xzf in de map restore/t werd uitgepakt, kwamen de config-map en beide configuratiebestanden in één keer tevoorschijn.

Een bestand van 28.648.800 bytes, gemaakt door hetzelfde toegangslog 600 keer achter elkaar te zetten, werd op elk niveau twee keer gecomprimeerd. -1 deed er ongeveer 0,3 seconde over voor 4.821.317 bytes, de standaard -6 ongeveer 0,65 seconde voor 3.625.500 bytes en -9 ongeveer 2,5 seconde voor 3.376.224 bytes. -9 was ongeveer 7% kleiner dan -6, maar duurde bijna vier keer zo lang.

gzip bewaart bij het comprimeren de oorspronkelijke bestandsnaam in het .gz-bestand. Nadat readme.txt.gz als backup-1.gz naar de restore-map was gekopieerd, toonde gzip -lN de bewaarde naam readme.txt, en gunzip -N maakte restore/readme.txt aan. Zonder -N wordt de naam de bestandsnaam zonder .gz (volgens de officiële handleiding).

ℹ️ 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.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 8   +   9   =