zip-opdracht: mappen comprimeren, uitpakken met unzip en compressie-opties
De zip-opdracht bundelt op Linux bestanden en mappen in één gecomprimeerd zip-bestand, en om het uit te pakken gebruik je unzip. Op een AlmaLinux 9-server kromp een websitemap met zip -r van 35.825 bytes tot 4.158 bytes, en unzip -O herstelde de onleesbare bestandsnamen in een zip-bestand dat op Windows was gemaakt.
De uitvoer hieronder komt uit een werkmap op een AlmaLinux 9.8-server, uitgevoerd als root, met tijden in UTC. De gecomprimeerde map site en de notitiebestanden zijn voorbeeldbestanden die voor de test zijn gemaakt. De op Windows gemaakte zip is nagebootst met een testbestand waarvan de bestandsnamen in CP949 zijn opgeslagen.
1️⃣ De zip-opdracht gebruiken
Na zip schrijf je eerst de naam van het nieuwe zip-bestand en daarna de bestanden die erin moeten. De opdracht hieronder comprimeert twee bestanden, readme.txt en memo.txt, tot één notes.zip.
zip notes.zip readme.txt memo.txt adding: readme.txt (deflated 92%)
adding: memo.txt (stored 0%)De [deflated 92%] aan het eind van een regel is hoeveel kleiner het bestand werd ten opzichte van de oorspronkelijke grootte. De [stored 0%] op de regel van memo.txt van 71 bytes betekent dat het bestand zonder compressie op de oorspronkelijke grootte is opgeslagen.
Om een map te comprimeren voeg je -r toe. Geef je zonder -r alleen de mapnaam op, dan komt alleen de mapvermelding site/ in het archief en niet de bestanden erin.
zip nodir.zip site adding: site/ (stored 0%)De map site die gecomprimeerd wordt, bestaat zoals hieronder uit drie submappen en zes bestanden.
Met -r gaan alle tien vermeldingen erin: de submappen, de bestanden erin en zelfs .htaccess, waarvan de naam met een punt begint.
zip -r site.zip site adding: site/ (stored 0%)
adding: site/css/ (stored 0%)
adding: site/css/style.css (deflated 93%)
adding: site/js/ (stored 0%)
adding: site/js/app.js (deflated 87%)
adding: site/logs/ (stored 0%)
adding: site/logs/access.log (deflated 94%)
adding: site/index.html (deflated 91%)
adding: site/about.html (deflated 87%)
adding: site/.htaccess (deflated 9%)Wat er in een klaar zip-bestand zit, controleer je zonder uitpakken met unzip -l. De opgeslagen bestanden waren samen 35.825 bytes, en ls -l toonde site.zip met 4.158 bytes.
unzip -l site.zipArchive: site.zip
Length Date Time Name
--------- ---------- ----- ----
0 10-28-2026 22:10 site/
0 10-28-2026 22:10 site/css/
4431 10-28-2026 22:10 site/css/style.css
0 10-28-2026 22:10 site/js/
1882 10-28-2026 22:10 site/js/app.js
0 10-28-2026 22:10 site/logs/
24134 10-28-2026 22:10 site/logs/access.log
3723 10-28-2026 22:10 site/index.html
1612 10-28-2026 22:10 site/about.html
43 10-28-2026 22:10 site/.htaccess
--------- -------
35825 10 filesls -l site.zip-rw-r--r-- 1 root root 4158 Oct 28 23:05 site.zip2️⃣ Opties van de zip-opdracht
Van de opties van de zip-opdracht laat -x bestanden weg die bij een patroon passen. Geef je [site/logs/*] op om de logmap over te slaan, dan vallen de map logs en access.log weg en gaan er maar acht vermeldingen in.
zip -r site-nolog.zip site -x 'site/logs/*' adding: site/ (stored 0%)
adding: site/css/ (stored 0%)
adding: site/css/style.css (deflated 93%)
adding: site/js/ (stored 0%)
adding: site/js/app.js (deflated 87%)
adding: site/index.html (deflated 91%)
adding: site/about.html (deflated 87%)
adding: site/.htaccess (deflated 9%)Zet het patroon tussen enkele aanhalingstekens, zodat de shell [*] niet eerst in bestandsnamen omzet. Voor hetzelfde doel geeft de officiële handleiding een voorbeeld met een backslash voor [*].
-u zet alleen de bestanden opnieuw in het archief die na het maken van het zip-bestand zijn gewijzigd. Nadat er een regel aan het eind van index.html is toegevoegd, wordt met -ru alleen dat ene bestand als [updating] opnieuw toegevoegd.
zip -ru site.zip siteupdating: site/index.html (deflated 90%)Dezelfde opdracht nog eens uitvoeren zonder gewijzigde bestanden gaf geen uitvoer, en de afsluitcode was 12. In de officiële handleiding betekent 12 dat zip niets te doen heeft.
zip -ru site.zip site; echo $?12Om vermeldingen in een zip-bestand te verwijderen gebruik je -d. Met [site/logs/*] worden de vermelding van de map logs en access.log uit site.zip verwijderd.
zip -d site.zip 'site/logs/*'deleting: site/logs/
deleting: site/logs/access.logDe getallen -0 tot en met -9 zijn het compressieniveau; volgens de officiële handleiding is de standaard -6. Dezelfde map site is drie keer met -q zonder uitvoer gecomprimeerd om de groottes te vergelijken. Omdat bij de -u-test een regel aan index.html is toegevoegd, is het totaal van de oorspronkelijke bestanden nu 35.875 bytes.
zip -qr -0 level0.zip sitezip -qr level6.zip sitezip -qr -9 level9.zip sitels -l level*.zip-rw-r--r-- 1 root root 37433 Oct 28 23:05 level0.zip
-rw-r--r-- 1 root root 4179 Oct 28 23:05 level6.zip
-rw-r--r-- 1 root root 3874 Oct 28 23:05 level9.zip| Compressieniveau | Grootte zip-bestand | T.o.v. oorspronkelijk totaal |
|---|---|---|
| Totaal oorspronkelijke bestanden | 35.875 bytes | 100% |
| -0 (geen compressie) | 37.433 bytes | 104.3% |
| -6 (standaard) | 4.179 bytes | 11.6% |
| -9 (maximale compressie) | 3.874 bytes | 10.8% |
De 37.433 bytes die met -0 ontstonden, waren meer dan het oorspronkelijke totaal van 35.875 bytes. Dat is de ongecomprimeerde data plus 1.558 bytes aan kopgegevens, zoals bestandsnamen en tijden, die bij elke vermelding komen. -9 was 305 bytes kleiner dan de standaard, en het hele verschil kwam van het grootste bestand, access.log.
Om een wachtwoord in te stellen voeg je -e toe. Je typt het wachtwoord twee keer, en de getypte tekens verschijnen niet op het scherm.
zip -e secret.zip memo.txtEnter password:
Verify password:
adding: memo.txt (stored 0%)Ook secret.zip, gemaakt met -e, toonde onder unzip -l de bestandsnamen, groottes en datums zonder wachtwoord. Alleen de inhoud van de bestanden wordt versleuteld, dus het past niet bij materiaal waarvan ook de bestandsnamen verborgen moeten blijven.
unzip -l secret.zipArchive: secret.zip
Length Date Time Name
--------- ---------- ----- ----
71 10-28-2026 22:10 memo.txt
--------- -------
71 1 file-P, dat het wachtwoord direct op de opdrachtregel zet, is een optie waarvan de officiële handleiding waarschuwt dat ze onveilig is, omdat andere gebruikers op dezelfde server lopende opdrachten kunnen zien. De handleiding noemt ook de standaardversleuteling van zip zelf betrekkelijk zwak.
Bij het uitpakken van een zip die met -e is gemaakt, vraagt unzip voor elk bestand om het wachtwoord, en met het juiste wachtwoord wordt dat bestand uitgepakt.
unzip secret.zip -d decArchive: secret.zip
[secret.zip] memo.txt password:
extracting: dec/memo.txt📌 Belangrijkste opties: resultaten uit dit artikel
| Optie | Taak | Resultaat in dit artikel | |
|---|---|---|---|
| zip -r | Zet alle submappen en bestanden in de map erin | Zonder -r één regel adding: site/, met -r tien vermeldingen inclusief .htaccess | |
| zip -x | Laat bestanden weg die bij een patroon passen | Zonder site/logs/* maar acht vermeldingen, zonder de map logs en access.log | |
| zip -u | Zet alleen bestanden die na het maken van de zip zijn gewijzigd opnieuw erin | Eén regel updating: site/index.html (deflated 90%); zonder wijzigingen geen uitvoer en afsluitcode 12 | |
| zip -d | Verwijdert vermeldingen in het zip-bestand | deleting: site/logs/ en deleting: site/logs/access.log | |
| zip -q | Verbergt de regels tijdens het comprimeren | Alle drie met -qr gecomprimeerde opdrachten (-0, standaard, -9) eindigen zonder adding-regels | |
| zip -0 | Slaat alleen op, zonder te comprimeren | level0.zip is 37433 bytes, groter dan het oorspronkelijke totaal | |
| zip -9 | Comprimeert zo klein mogelijk (standaard -6) | level9.zip 3874 bytes, level6.zip met de standaard 4179 bytes | |
| zip -e | Vraagt om een wachtwoord en versleutelt de inhoud | Vraagt Enter password: en Verify password:, daarna adding: memo.txt (stored 0%) | |
| unzip -l | Toont de lijst met opgeslagen vermeldingen zonder uit te pakken | site.zip met 10 files, samen 35825 bytes | |
| unzip -d | Stelt de doelmap in en maakt die aan als ze niet bestaat | Begint met creating: restore/site/, en de mapstructuur van site wordt onder restore uitgepakt | |
| unzip -o | Overschrijft alle bestaande bestanden zonder te vragen | Vijf inflating-regels zonder vraag | |
| unzip -n | Slaat bestaande bestanden over zonder te vragen | Na de regel Archive: site.zip verschijnt niets | |
| unzip -t | Test de gecomprimeerde data zonder uit te pakken | OK voor elke vermelding en No errors detected; de afgekapte broken.zip geeft End-of-central-directory signature not found | |
| unzip -O | Stelt de tekencodering van de bestandsnamen in de zip in | Met -O CP949 verschijnen de onleesbare namen als 보고서.txt en 견적서.txt (Koreaans voor 'rapport' en 'offerte') | |
| unzip -p | Stuurt de uitgepakte inhoud naar de standaarduitvoer in plaats van bestanden te maken | Alleen de twee regels van .htaccess verschijnen, zonder dat er een bestand ontstaat |
📎 Andere opties: volgens de officiële handleiding
| Optie | Taak | |
|---|---|---|
| zip -m | Verwijdert na het comprimeren de oorspronkelijke bestanden en mappen (pas als het zip-bestand klaar is; de officiële handleiding raadt aan het met -T te gebruiken) | |
| zip -j | Slaat alleen bestandsnamen op, zonder mappaden | |
| zip -y | Slaat een symbolische koppeling op als koppeling in plaats van het bestand waarnaar ze verwijst | |
| zip -T | Test het gemaakte zip-bestand en laat het oorspronkelijke zip-bestand ongewijzigd als de test mislukt | |
| zip -f | Vervangt alleen vermeldingen die al in het zip-bestand staan door gewijzigde bestanden en voegt geen nieuwe toe | |
| zip -i | Zet alleen bestanden erin die bij het opgegeven patroon passen | |
| zip -P | Zet het wachtwoord direct op de opdrachtregel (de officiële handleiding waarschuwt dat het onveilig is) | |
| unzip -j | Pakt alleen de bestanden uit in één map, zonder de mapstructuur van de zip aan te maken | |
| unzip -x | Stelt vermeldingen in die niet uitgepakt worden | |
| unzip -q | Verbergt de regels tijdens het uitpakken | |
| unzip -u | Pakt alleen bestanden uit die op de schijf ontbreken of nieuwer zijn | |
| unzip -v | Toont in de lijst ook compressiemethode, gecomprimeerde grootte, verhouding en CRC |
3️⃣ De unzip-opdracht gebruiken
Om een zip-bestand op Linux uit te pakken, schrijf je de naam van het zip-bestand na unzip. Zonder -d om een map te kiezen wordt in de huidige map uitgepakt (volgens de officiële handleiding), daarom is deze keer de map restore opgegeven.
unzip site.zip -d restoreArchive: site.zip
creating: restore/site/
creating: restore/site/css/
inflating: restore/site/css/style.css
creating: restore/site/js/
inflating: restore/site/js/app.js
inflating: restore/site/index.html
inflating: restore/site/about.html
inflating: restore/site/.htaccessBestaat de met -d opgegeven map niet, dan maakt unzip die aan en pakt de mapstructuur van site daaronder ongewijzigd uit.
Pak je opnieuw uit op dezelfde plek, dan stopt unzip bij elk bestand dat al bestaat en vraagt of het overschreven moet worden. Kies je [N]one, dan eindigt het zonder een van de overige bestanden te overschrijven.
unzip site.zip -d restoreArchive: site.zip
replace restore/site/css/style.css? [y]es, [n]o, [A]ll, [N]one, [r]ename: NWil je geen vragen, voeg dan -o of -n toe. -o overschrijft alle bestaande bestanden en -n slaat ze over. Omdat de officiële handleiding -o een gevaarlijke optie noemt, controleer je eerst of de map overschreven mag worden voordat je -o toevoegt.
unzip -o site.zip -d restoreArchive: site.zip
inflating: restore/site/css/style.css
inflating: restore/site/js/app.js
inflating: restore/site/index.html
inflating: restore/site/about.html
inflating: restore/site/.htaccessunzip -n site.zip -d restoreArchive: site.zipPak je met -n uit op een plek waar alle bestanden al bestaan, dan verschijnt er niets na de regel Archive.
Om maar een deel van een zip-bestand uit te pakken, schrijf je een pad of patroon na de naam van het zip-bestand. Met [site/css/*] worden alleen de map css en style.css uitgepakt.
unzip site.zip 'site/css/*' -d partArchive: site.zip
creating: part/site/css/
inflating: part/site/css/style.css4️⃣ unzip-fouten
Een zip-bestand van een andere server test je vóór het uitpakken met unzip -t. Zijn de gecomprimeerde data in orde, dan verschijnt bij elke vermelding OK en op de laatste regel [No errors detected].
unzip -t site.zipArchive: site.zip
testing: site/ OK
testing: site/css/ OK
testing: site/css/style.css OK
testing: site/js/ OK
testing: site/js/app.js OK
testing: site/index.html OK
testing: site/about.html OK
testing: site/.htaccess OK
No errors detected in compressed data of site.zip.Een zip waarvan het eind ontbrak door een afgebroken overdracht, eindigde met [End-of-central-directory signature not found]. Dat is het resultaat van een test met -t van een broken.zip die alleen de eerste 2.000 bytes van site.zip bevatte; site.zip was na het verwijderen van de logs-vermeldingen met -d 2.436 bytes.
unzip -t broken.zipArchive: broken.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of broken.zip or
broken.zip.zip, and cannot find broken.zip.ZIP, period.unzip leest eerst de bestandslijst helemaal aan het eind van een zip-bestand (de central directory). Daarom kon het bij broken.zip, waarvan het eind ontbrak, zelfs de eerste vermelding niet testen.
Een bestand dat geen zip is, gaf dezelfde melding. site.tar.gz, gebundeld met tar, eindigde in unzip met dezelfde fout; een tar.gz-bestand pak je uit met de tar-opdracht.
unzip site.tar.gzArchive: site.tar.gz
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of site.tar.gz or
site.tar.gz.zip, and cannot find site.tar.gz.ZIP, period.Een zip-bestand dat op Windows is gemaakt, slaat de bestandsnamen soms op in een Windows-tekencodering in plaats van UTF-8. Toen report-win.zip, waarvan de namen in CP949 zijn opgeslagen, op een UTF-8-server met unzip -l werd geopend, verschenen de bestandsnamen als onleesbare tekens.
unzip -l report-win.zipArchive: report-win.zip
Length Date Time Name
--------- ---------- ----- ----
26 10-28-2026 22:10 ║╕░э╝н.txt
17 10-28-2026 22:10 ░▀└√╝н.txt
--------- -------
43 2 filesSchrijf je na -O de tekencodering van de Windows waarop de zip is gemaakt, dan verschijnen de namen goed, en bestanden die met dezelfde optie zijn uitgepakt, krijgen hun oorspronkelijke naam.
unzip -O CP949 -l report-win.zipArchive: report-win.zip
Length Date Time Name
--------- ---------- ----- ----
26 10-28-2026 22:10 보고서.txt
17 10-28-2026 22:10 견적서.txt
--------- -------
43 2 filesunzip -O CP949 report-win.zip -d winArchive: report-win.zip
inflating: win/보고서.txt
inflating: win/견적서.txtVolgens de hulp van unzip is -O de optie voor zip-bestanden die op DOS of Windows zijn gemaakt, en -I die voor zip-bestanden van andere systemen.
De foutmeldingen die bij het uitpakken verschenen en wat je daarna controleert, staan hieronder.
| Uitvoer | Betekenis | Daarna controleren |
|---|---|---|
| End-of-central-directory signature not found | De bestandslijst aan het eind van het zip-bestand is niet gevonden – het bestand is afgekapt of geen zip | Grootte vergelijken met het origineel en opnieuw downloaden · tar.gz met tar |
| cannot find or open | Geen bestand met die naam in de huidige map | Bestandsnaam en locatie met ls |
| skipping: … incorrect password | Het wachtwoord was drie keer fout, dat bestand is overgeslagen (afsluitcode 82) | Hoofdletters en kleine letters van het wachtwoord en de invoertaal |
| Bestandsnamen verschijnen als onleesbare tekens | Namen opgeslagen in een Windows-tekencodering | Die codering (zoals CP949) na -O |
🔲 Simulator van de zip-opdracht
In de simulator hieronder kun je de stappen zelf typen: comprimeren met zip, en met unzip de lijst bekijken of uitpakken.
🔢 FAQ & aanbevolen content
WordPress · Plugins
WordPress-plugin installeren: installeren via zoeken, zip uploaden en activeren
De stappen om een plugin te installeren via het scherm Plugins toevoegen, door in de officiële map te zoeken of een zip-bestand te uploaden.
Zoeken
Linux-commando find
De find-opdracht zoekt bestanden op voorwaarden als naam, extensie, grootte en datum, en werkt meteen verder met de gevonden bestanden.
Bestandsbeheer
Opties van de cp-opdracht en bestanden in één keer overschrijven
De opties van de cp-opdracht om bestanden en mappen te kopiëren, en hoe je in één keer kopieert zonder vraag om te overschrijven.
ℹ️ 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.