
ZIP-bestanden zijn een universeel archief dat vaak wordt gebruikt op Windows-, macOS- en zelfs Linux-systemen. U kunt een zip-archief maken of bestanden uitpakken met een aantal algemene Linux-terminalopdrachten.
Het ZIP-gecomprimeerde archiefbestandsformaat
Dankzij de dominantie van het ZIP-formaat in het Windows-rijk, zijn ZIP-bestanden waarschijnlijk de meest voorkomende vorm van gecomprimeerd archief ter wereld.
Hoewel .tar.gz- en tar.bz2-bestanden veel voorkomen onder Linux, zullen Windows-gebruikers u waarschijnlijk een archief in ZIP-indeling sturen. En als u een aantal bestanden wilt archiveren en ze naar een Windows-gebruiker wilt sturen, is het ZIP-formaat de gemakkelijkste, meest compatibele oplossing voor iedereen.
VERWANT: Bestanden extraheren uit een .tar.gz- of .tar.bz2-bestand op Linux
zip, unzip en andere hulpprogramma’s
Je weet misschien al dat Linux en Unix-achtige besturingssystemen zoals macOS tools hebben waarmee je ZIP-bestanden kunt maken en er bestanden uit kunt extraheren, genaamd zip en unzip. Maar er is een hele familie van gerelateerde hulpprogramma’s zoals zipcloak, zipdetails, zipsplit , en zipinfo.
We hebben enkele Linux-distributies gecontroleerd om te zien of ze deze hulpprogramma’s in de standaardinstallatie bevatten. Alle hulpprogramma’s waren aanwezig in Ubuntu 19.04, 18.10 en 18.04. Ze waren ook aanwezig in Manjaro 18.04. Fedora 29 inbegrepen zip en unzip, maar geen van de andere hulpprogramma’s en dat was ook het geval voor CentOS.
Om de ontbrekende elementen op Fedora 29 te installeren, gebruik je het volgende commando:
sudo dnf install perl-IO-Compress

Gebruik het volgende commando om de ontbrekende elementen op CentOS 7 te installeren:
sudo yum install perl-IO-Compress

Als een van de zip-hulpprogramma’s ontbreekt in een Linux-distributie die hierboven niet werd genoemd, gebruik dan de pakketbeheertool van die Linux-distributie om het vereiste pakket te installeren.
Hoe maak je een ZIP-bestand aan met de zip-opdracht
Om een ZIP-bestand te maken, moet u dit aangeven zip de naam van het archiefbestand en welke bestanden erin moeten worden opgenomen. U hoeft de extensie “.zip” niet aan de archiefnaam toe te voegen, maar het kan geen kwaad als u dat wel doet.
Om een bestand met de naam source_code.zip met alle C-broncodebestanden en headerbestanden in de huidige map, zou je deze opdracht gebruiken:
zip source_code *.c *.h

Elk bestand wordt vermeld zoals het is toegevoegd. De naam van het bestand en de hoeveelheid compressie die op dat bestand is bereikt, worden weergegeven.

Als je naar het nieuwe ZIP-archief kijkt, kun je zien dat de bestandsextensie “.zip” automatisch is toegevoegd door zip.
ls -l source_code.zip

Als u de uitvoer van zip gebruik terwijl het ZIP-bestand wordt gemaakt de -q (stille) optie.
zip -q source_code *.c *.h

Inclusief mappen in ZIP-bestanden
Om submappen in het ZIP-bestand op te nemen, gebruikt u de -r (recursieve) optie en neem de naam van de submap op de opdrachtregel op. Gebruik deze opdracht om een ZIP-bestand te maken zoals eerder en ook de archiefsubdirectory op te nemen.
zip -r -q source_code archive/ *.c *.h

Om rekening te houden met de persoon die de bestanden gaat extraheren uit het ZIP-bestand dat u maakt, is het vaak beleefd om ZIP-bestanden te maken met de bestanden erin in een directory. Wanneer de persoon die het ZIP-bestand ontvangt, het uitpakt, worden alle bestanden netjes in een map op hun computer geplaatst.
In de volgende opdracht gaan we het work directory en alle submappen. Merk op dat deze opdracht wordt uitgegeven vanuit de bovenliggende directory van de work map.
zip -r -q source_code work/

Het compressieniveau instellen
U kunt instellen hoeveel compressie wordt toegepast op de bestanden wanneer ze worden toegevoegd aan het ZIP-archief. Het bereik is van 0 tot 9, waarbij 0 helemaal geen compressie is. Hoe hoger de compressie, hoe langer het duurt om het ZIP-bestand te maken. Voor ZIP-bestanden van bescheiden formaat is het tijdsverschil geen noemenswaardige straf. Maar voor ZIP-bestanden met een bescheiden formaat is de standaardcompressie (niveau 6) hoe dan ook waarschijnlijk goed genoeg.
Te krijgen zip om een specifiek compressieniveau te gebruiken, geeft u het nummer als een optie op de opdrachtregel door met een “-“, zoals dit:
zip -0 -r -q source_code work/

Het standaard compressieniveau is 6. Het is niet nodig om het -6 optie, maar het kan geen kwaad als je dat doet.
zip -r -q source_code work/

Het maximale compressieniveau is niveau 9.
zip -9 -r -q source_code work/

Met de selectie van bestanden en mappen die hier worden gearchiveerd, is het verschil tussen geen compressie (niveau 0) en de standaardcompressie (niveau 6) 400K. Het verschil tussen de standaardcompressie en het hoogste compressieniveau (niveau 9) is slechts 4K.
Dat lijkt misschien niet veel, maar voor archieven met honderden of zelfs duizenden bestanden zou de kleine hoeveelheid extra compressie per bestand een waardevolle ruimtebesparing opleveren.
Wachtwoorden toevoegen aan ZIP-bestanden
Wachtwoorden toevoegen aan ZIP-bestanden is eenvoudig. Gebruik de -e (versleutelen) optie en u wordt gevraagd om uw wachtwoord in te voeren en het opnieuw in te voeren ter verificatie.
zip -e -r -q source_code work/

Hoe een ZIP-bestand uit te pakken met de unzip-opdracht
Om de bestanden uit een ZIP-bestand te extraheren, gebruikt u de unzip-opdracht en geeft u de naam van het ZIP-bestand op. Merk op dat jij Doen moet de extensie “.zip” opgeven.
unzip source_code.zip

Terwijl de bestanden worden uitgepakt, worden ze weergegeven in het terminalvenster.

ZIP-bestanden bevatten geen details over het eigendom van het bestand. Alle bestanden die worden uitgepakt, hebben de eigenaar ingesteld op de gebruiker die ze uitpakt.
Net als zip, unzip heeft een -q (stille) optie, zodat u de bestandslijst niet hoeft te zien terwijl de bestanden worden uitgepakt.
unzip -q source_code.zip

Bestanden uitpakken naar een doeldirectory
Om de bestanden in een specifieke map te laten uitpakken, gebruikt u de -d (directory) optie, en geef het pad op naar de directory waarin u het archief wilt uitpakken.
unzip -q source_code.zip -d ./development

Pak wachtwoordbeveiligde ZIP-bestanden uit
Als er een ZIP-bestand is gemaakt met een wachtwoord, unzip zal u om het wachtwoord vragen. Als u niet het juiste wachtwoord opgeeft, unzip zal de bestanden niet uitpakken.
unzip -q source_code.zip

Als het u niet uitmaakt of uw wachtwoord door anderen wordt gezien – of dat het wordt opgeslagen in uw opdrachtgeschiedenis – kunt u het wachtwoord op de opdrachtregel opgeven met de -P (wachtwoord) optie. (U moet een hoofdletter “P” gebruiken)
unzip -P fifty.treacle.cutlass -q source_code.zip

Exclusief bestanden
Als u een bepaald bestand of een groep bestanden niet wilt uitpakken, gebruikt u de -x (uitsluiten) optie. In dit voorbeeld willen we alle bestanden extraheren, behalve de bestanden die eindigen op een “.h” extensie.
unzip -q source_code.zip -x *.h

Bestanden overschrijven
Stel dat u een archief heeft uitgepakt, maar u heeft per ongeluk enkele uitgepakte bestanden verwijderd.
Een snelle oplossing hiervoor zou zijn om de bestanden opnieuw uit te pakken. Maar als u het ZIP-bestand probeert uit te pakken in dezelfde map als voorheen, unzip zal u vragen om een beslissing over het overschrijven van de bestanden. Het verwacht een van de volgende reacties.
Los van de r (hernoemen) reactie, deze reacties zijn hoofdlettergevoelig.
- y: Ja, overschrijf dit bestand
- n: Nee, overschrijf dit bestand niet
- EEN: Alle, overschrijf alle bestanden
- N: Geen, overschrijf geen van de bestanden
- r: Hernoem, pak dit bestand uit maar geef het een nieuwe naam. U wordt om een nieuwe naam gevraagd.

Te dwingen unzip om bestaande bestanden te overschrijven, gebruikt u de -o (overschrijven) optie.
unzip -o -q source_code.zip

De meest efficiënte manier om de ontbrekende bestanden te vervangen zou zijn unzip extraheer alleen bestanden in het archief die niet in de doelmap. Gebruik hiervoor de -n (nooit overschrijven) optie.
unzip -n source_code.zip

In een ZIP-bestand kijken
Het is vaak handig en leerzaam om een lijst van de bestanden in een ZIP-bestand te zien voordat u het uitpakt. U kunt dit doen met de -l (lijst archief) optie. Het wordt doorgesluisd less om de output beheersbaar te maken.
unzip -l source_code.zip | less

De uitvoer toont de mappen en bestanden in het ZIP-bestand, hun lengte en de tijd en datum waarop ze aan het archief zijn toegevoegd. Druk op “q” om af te sluiten less.

Er zijn andere manieren om in een ZIP-bestand te kijken die verschillende soorten informatie geven, zoals we zullen zien.
Voeg een wachtwoord toe met het zipcloak-commando
Als u een ZIP-bestand heeft gemaakt maar bent vergeten een wachtwoord toe te voegen, wat kunt u dan doen? U kunt snel een wachtwoord aan een ZIP-bestand toevoegen met de zipcloak opdracht. Geef de naam van het ZIP-bestand op de opdrachtregel door. U wordt om een wachtwoord gevraagd. U moet het wachtwoord verifiëren door het een tweede keer in te voeren.
zipcloak source_code.zip

Bekijk File Details Met de zipdetails Command
De zipdetails commando zal je een veel van informatie over het ZIP-bestand. De enige verstandige manier om om te gaan met de hoeveelheid uitvoer die dit commando kan geven, is door het door te sluizen less .
zipdetails source_code.zip | less

Merk op dat de informatie bestandsnamen zal bevatten, zelfs als het ZIP-bestand met een wachtwoord is beveiligd. Dit type informatie wordt als metagegevens in het ZIP-bestand opgeslagen en maakt geen deel uit van de gecodeerde gegevens.

Zoek in het bestand met de opdracht zipgrep
De zipgrep commando kunt u zoeken binnen de bestanden in een ZIP-bestand. In het volgende voorbeeld willen we weten welke bestanden in het ZIP-bestand de tekst “keyval.h” bevatten.
zipgrep keyval.h source_code.zip

We kunnen zien dat de bestanden slang.c en getval.c bevatten de string “keyval.h”. We kunnen ook zien dat er van elk van deze bestanden twee kopieën zijn in verschillende mappen in het ZIP-bestand.
Bekijk informatie met de zipinfo-opdracht
De zipinfo commando geeft je nog een andere manier om in een ZIP-bestand te kijken. Zoals eerder leiden we de output door less.
zipinfo source_code.zip | less

Van links naar rechts toont de output:
- De bestandsrechten
- De versie van de tool die is gebruikt om het ZIP-bestand te maken
- De oorspronkelijke bestandsgrootte
- Een bestandsdescriptor (hieronder beschreven)
- De methode van compressie (in dit geval deflatie)
- De gegevens en tijdstempel
- De naam van het bestand en een directory
De bestandsdescriptor bestaat uit twee karakters. Het eerste teken is een “t” of een “b” om een tekst- of binair bestand aan te duiden. Als het een hoofdletter is, is het bestand versleuteld. Het tweede teken kan een van de vier tekens zijn. Dit teken geeft aan welk type metagegevens in dit bestand is opgenomen: geen, een uitgebreide lokale header, een “extra veld” of beide.
- -: Als geen van beide bestaat, is het teken een koppelteken
- l: als er een uitgebreide lokale header is maar geen extra veld
- X: als er geen uitgebreide lokale koptekst is maar wel een extra veld
- X: als er een uitgebreide lokale header is en er is een extra veld

Splits het bestand met het zipsplit-commando
Als u het ZIP-bestand naar iemand anders moet sturen, maar er zijn groottebeperkingen of problemen met de verzending van het bestand, kunt u de zipsplit opdracht om het originele ZIP-bestand te splitsen in een reeks kleinere ZIP-bestanden.
De -n Met de optie (grootte) kunt u een maximale grootte instellen voor elk van de nieuwe ZIP-bestanden. In dit voorbeeld splitsen we de source_code.zip het dossier. We willen niet dat een van de nieuwe ZIP-bestanden groter is dan 100 KB (102400 bytes).
zipsplit -n 102400 source_code.zip

De grootte die u kiest, mag niet kleiner zijn dan de grootte van de bestanden in het ZIP-bestand.
Met behulp van deze commando’s kunt u uw eigen ZIP-bestanden maken, ZIP-bestanden die u ontvangt uitpakken en er verschillende andere bewerkingen op uitvoeren zonder ooit de Linux-terminal te verlaten.