zip-opdracht: mappen comprimeren, uitpakken met unzip en compressie-opties

TestomgevingRHEL-familieAlmaLinux 9.8root-accountGecontroleerd op 2026-11-05
Commando's voor comprimeren · archiverenzipunzipLocatie/usr/bin/zip
Mappen comprimeren en uitpakken met unzip

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

  • ↪️ Bestanden en mappen comprimeren (-r)

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.

site/
css/
style.css
js/
app.js
logs/
access.log
index.html
about.html
.htaccess

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.zip
Archive:  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 files
ls -l site.zip
-rw-r--r-- 1 root root 4158 Oct 28 23:05 site.zip

2️⃣ Opties van de zip-opdracht

  • ↪️ -x, -u, -d, compressieniveau, -e

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 site
updating: 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 $?
12

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

De 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 site
zip -qr level6.zip site
zip -qr -9 level9.zip site
ls -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
CompressieniveauGrootte zip-bestandT.o.v. oorspronkelijk totaal
Totaal oorspronkelijke bestanden35.875 bytes100%
-0 (geen compressie)37.433 bytes104.3%
-6 (standaard)4.179 bytes11.6%
-9 (maximale compressie)3.874 bytes10.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.txt
Enter 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.zip
Archive:  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 dec
Archive:  secret.zip
[secret.zip] memo.txt password:
 extracting: dec/memo.txt

📌 Belangrijkste opties: resultaten uit dit artikel

OptieTaakResultaat in dit artikel
zip -rZet alle submappen en bestanden in de map erinZonder -r één regel adding: site/, met -r tien vermeldingen inclusief .htaccess
zip -xLaat bestanden weg die bij een patroon passenZonder site/logs/* maar acht vermeldingen, zonder de map logs en access.log
zip -uZet alleen bestanden die na het maken van de zip zijn gewijzigd opnieuw erinEén regel updating: site/index.html (deflated 90%); zonder wijzigingen geen uitvoer en afsluitcode 12
zip -dVerwijdert vermeldingen in het zip-bestanddeleting: site/logs/ en deleting: site/logs/access.log
zip -qVerbergt de regels tijdens het comprimerenAlle drie met -qr gecomprimeerde opdrachten (-0, standaard, -9) eindigen zonder adding-regels
zip -0Slaat alleen op, zonder te comprimerenlevel0.zip is 37433 bytes, groter dan het oorspronkelijke totaal
zip -9Comprimeert zo klein mogelijk (standaard -6)level9.zip 3874 bytes, level6.zip met de standaard 4179 bytes
zip -eVraagt om een wachtwoord en versleutelt de inhoudVraagt Enter password: en Verify password:, daarna adding: memo.txt (stored 0%)
unzip -lToont de lijst met opgeslagen vermeldingen zonder uit te pakkensite.zip met 10 files, samen 35825 bytes
unzip -dStelt de doelmap in en maakt die aan als ze niet bestaatBegint met creating: restore/site/, en de mapstructuur van site wordt onder restore uitgepakt
unzip -oOverschrijft alle bestaande bestanden zonder te vragenVijf inflating-regels zonder vraag
unzip -nSlaat bestaande bestanden over zonder te vragenNa de regel Archive: site.zip verschijnt niets
unzip -tTest de gecomprimeerde data zonder uit te pakkenOK voor elke vermelding en No errors detected; de afgekapte broken.zip geeft End-of-central-directory signature not found
unzip -OStelt de tekencodering van de bestandsnamen in de zip inMet -O CP949 verschijnen de onleesbare namen als 보고서.txt en 견적서.txt (Koreaans voor 'rapport' en 'offerte')
unzip -pStuurt de uitgepakte inhoud naar de standaarduitvoer in plaats van bestanden te makenAlleen de twee regels van .htaccess verschijnen, zonder dat er een bestand ontstaat

📎 Andere opties: volgens de officiële handleiding

OptieTaak
zip -mVerwijdert 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 -jSlaat alleen bestandsnamen op, zonder mappaden
zip -ySlaat een symbolische koppeling op als koppeling in plaats van het bestand waarnaar ze verwijst
zip -TTest het gemaakte zip-bestand en laat het oorspronkelijke zip-bestand ongewijzigd als de test mislukt
zip -fVervangt alleen vermeldingen die al in het zip-bestand staan door gewijzigde bestanden en voegt geen nieuwe toe
zip -iZet alleen bestanden erin die bij het opgegeven patroon passen
zip -PZet het wachtwoord direct op de opdrachtregel (de officiële handleiding waarschuwt dat het onveilig is)
unzip -jPakt alleen de bestanden uit in één map, zonder de mapstructuur van de zip aan te maken
unzip -xStelt vermeldingen in die niet uitgepakt worden
unzip -qVerbergt de regels tijdens het uitpakken
unzip -uPakt alleen bestanden uit die op de schijf ontbreken of nieuwer zijn
unzip -vToont in de lijst ook compressiemethode, gecomprimeerde grootte, verhouding en CRC

3️⃣ De unzip-opdracht gebruiken

  • ↪️ zip uitpakken op Linux met -d, -o en -n

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 restore
Archive:  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/.htaccess

Bestaat 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 restore
Archive:  site.zip
replace restore/site/css/style.css? [y]es, [n]o, [A]ll, [N]one, [r]ename: N

Wil 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 restore
Archive:  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/.htaccess
unzip -n site.zip -d restore
Archive:  site.zip

Pak 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 part
Archive:  site.zip
   creating: part/site/css/
  inflating: part/site/css/style.css

4️⃣ unzip-fouten

  • ↪️ End-of-central-directory en onleesbare bestandsnamen

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.zip
Archive:  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.zip
Archive:  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.gz
Archive:  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.zip
Archive:  report-win.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       26  10-28-2026 22:10   ║╕░э╝н.txt
       17  10-28-2026 22:10   ░▀└√╝н.txt
---------                     -------
       43                     2 files

Schrijf 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.zip
Archive:  report-win.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       26  10-28-2026 22:10   보고서.txt
       17  10-28-2026 22:10   견적서.txt
---------                     -------
       43                     2 files
unzip -O CP949 report-win.zip -d win
Archive:  report-win.zip
  inflating: win/보고서.txt
  inflating: win/견적서.txt

Volgens 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.

UitvoerBetekenisDaarna controleren
End-of-central-directory signature not foundDe bestandslijst aan het eind van het zip-bestand is niet gevonden – het bestand is afgekapt of geen zipGrootte vergelijken met het origineel en opnieuw downloaden · tar.gz met tar
cannot find or openGeen bestand met die naam in de huidige mapBestandsnaam en locatie met ls
skipping: … incorrect passwordHet 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 tekensNamen opgeslagen in een Windows-tekencoderingDie 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.

Simulator van de zip-opdrachtZip 3.0 · UnZip 6.00
[root@server work]#
Werkt alleen in de browser en comprimeert geen echte bestanden. De compressieverhoudingen zijn gemeten waarden; voor bestanden die in de simulator nieuw zijn gemaakt, zijn het schattingen. Met ↑↓ haal je eerder getypte opdrachten terug.

🔢 FAQ & aanbevolen content

Een met gzip gecomprimeerd .gz-bestand eindigde in unzip met [End-of-central-directory signature not found]. Met [gzip -d readme.txt.gz] uitgepakt, werd readme.txt.gz weer readme.txt. Een .tar.gz, waarbij meerdere bestanden met tar zijn gebundeld en daarna met gzip gecomprimeerd, pak je in één keer uit met tar.

Op de gecontroleerde AlmaLinux 9-server waren zip en unzip opdrachten die respectievelijk door de pakketten zip en unzip waren geïnstalleerd. Op RHEL-achtige systemen installeer je ze dus met [sudo dnf install zip unzip], op Debian-achtige met [sudo apt install zip unzip] (volgens de officiële Debian-pakketlijst).

Schrijf na unzip -p het zip-bestand en het pad erin, en de inhoud verschijnt direct op het scherm. [unzip -p site.zip site/.htaccess] toonde alleen de twee regels van .htaccess, zonder een bestand te maken.

ℹ️ 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: 6   +   6   =