Bestanden zippen of uitpakken vanuit de Linux-terminal

Linux shell-prompt
Fatmawati Achmad Zaenuri / Shutterstock.com

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

zip installatie commando voor Fedora

Gebruik het volgende commando om de ontbrekende elementen op CentOS 7 te installeren:

sudo yum install perl-IO-Compress

Zip-installatieopdracht in Centos

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

zip-opdracht in een terminalvenster

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.

uitvoer van zip-opdracht in een terminalvenster

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

ls op zip-archief in een terminalvenster

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

zip -q source_code *.c *.h

-q stille optie in een terminalvenster

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

-r recursieve optie in een terminalvenster

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 zippen van de werkmap in een terminalvenster

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/

-0 compressie-optie in een terminalvenster

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/

niveau 6 compressie in een terminalvenster

Het maximale compressieniveau is niveau 9.

zip -9 -r -q source_code work/

-9 compressie in een terminalvenster

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/

Wachtwoorden toevoegen aan zip-bestanden in een terminalvenster

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

het unzip-commando in een terminalvenster

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

uitvoer van unzip in een 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

unzip -q optie in een terminalvenster

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

unzip naar een doelmap in een terminalvenster

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

de unzip met wachtwoordopdracht in een terminalvenster

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

uitpakken met wachtwoordoptie in een terminalvenster

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

unzip uitsluitingsoptie in een terminalvenster

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.

overschrijf prompts in een terminalvenster

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

unzip -o -q source_code.zip

overschrijfoptie in een terminalvenster

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

unzip met -n nooit overschrijven optie in een terminalvenster

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

unzip listing-optie in een terminalvenster

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.

lijst archiefuitvoer in een terminalvenster

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

zipcloak in een terminalvenster

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

de zipdetails-opdracht in een terminalvenster

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.

uitvoer van zipdetails in een terminalvenster

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

het zipgrep-commando in een terminalvenster

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

zipinfo commando in een terminalvenster

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

zipinfo-uitvoer in een terminalvenster

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

het zipsplit-commando in een terminalvenster

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.

Nieuwste artikelen

spot_img

Related Stories

Leave A Reply

Vul alstublieft uw commentaar in!
Vul hier uw naam in