Bestanden zippen en uitpakken met Gzip op Linux

Linux-terminal op een rode achtergrond.
fatmawati achmad zaenuri/Shutterstock.com

Er zijn veel hulpprogramma’s voor bestandscompressie, maar degene die je gegarandeerd op elke Linux-distributie zult vinden, is gzip. Als u slechts één compressietool leert gebruiken, zou dat moeten zijn: gzip .

Algoritmen en bomen

De gzip datacompressietool werd begin jaren negentig geschreven en wordt nog steeds in elke Linux-distributie aangetroffen. Er zijn andere compressietools beschikbaar, maar op welke Linux-computer je ook moet werken, je zult merken dat gzip ben ermee bezig. Dus als je weet hoe je het moet gebruiken? gzipbent u klaar om te gaan zonder dat u iets hoeft te installeren.

gzip is een implementatie van het DEFLATE-algoritme dat is uitgevonden en gepatenteerd door Phil Katz, bekend van PKZIP. Het DEFLATE-algoritme is verbeterd ten opzichte van eerdere compressie-algoritmen die allemaal op variaties van een thema werkten. De te comprimeren gegevens worden gescand en unieke strings worden geïdentificeerd en toegevoegd aan een binaire boom.

De unieke strings krijgen een uniek ID-token toegewezen op grond van: hun positie in de boom. De tokens worden gebruikt om de strings in de gegevens te vervangen en omdat de tokens kleiner zijn dan de gegevens die ze vervangen, wordt het bestand gecomprimeerd. Door de tokens te vervangen door de originele strings, worden de gegevens opnieuw opgeblazen naar de niet-gecomprimeerde staat.

Benchmarked: wat is het beste bestandscompressieformaat?

VERWANTBenchmarked: wat is het beste bestandscompressieformaat?

Het DEFLATE-algoritme voegde de wending toe dat de meest voorkomende strings de kleinste tokens kregen en de minst vaak voorkomende strings grotere. Het DEFLATE-algoritme bevatte ook ideeën van twee eerdere compressiemethoden, Huffman-codering en LZ77-compressie.

Op het moment van schrijven is het DEFLATE-algoritme bijna drie decennia oud. Drie decennia geleden waren de kosten voor gegevensopslag hoog en waren de transmissiesnelheden laag. Datacompressie was van cruciaal belang.

4 manieren om schijfruimte vrij te maken op Linux

VERWANT4 manieren om schijfruimte vrij te maken op Linux

Gegevensopslag is tegenwoordig veel goedkoper en transmissiesnelheden zijn orden van grootte sneller. Maar we hebben zoveel meer gegevens om op te slaan en over de hele wereld hebben mensen toegang tot cloudopslag en streamingdiensten. Gegevenscompressie is nog steeds vitaal belangrijk, zelfs als je alleen maar iets doet dat je moet uploaden of verzenden, of je probeert wat ruimte terug te winnen op een lokale harde schijf.

Het gzip-commando

Hoe groter een bestand, hoe beter de compressie kan zijn. Dit heeft twee redenen. Een daarvan is dat er veel herhaalde, identieke reeksen bytes in een groot bestand zullen zijn. De tweede reden is dat de lijst met strings en tokens in het gecomprimeerde bestand moet worden opgeslagen zodat decompressie kan plaatsvinden. Met een heel klein bestand kan die overhead de voordelen van de compressie tenietdoen. Maar zelfs met een vrij klein bestand zal er waarschijnlijk enige verkleining optreden.

Een bestand comprimeren

Om een ​​bestand te comprimeren, hoeft u alleen maar de naam van het bestand door te geven aan de gzip opdracht. We controleren de oorspronkelijke grootte van het bestand, comprimeren het en controleren vervolgens de grootte van het gecomprimeerde bestand.

ls -lh calc-sheet.ods
gzip calc-sheet.ods
ls -lh cal-*

Een spreadsheet comprimeren

Het originele bestand, een spreadsheet genaamd “calc-sheet.ods” is 11 KB, en het gecomprimeerde bestand – ook wel een archiefbestand genoemd – is 9,3 KB. Merk op dat de naam van het archiefbestand de naam is van het originele bestand met “.gz” eraan toegevoegd.

Het eerste gebruik van de ls opdracht is gericht op een specifiek bestand, de spreadsheet. Het tweede gebruik van ls zoekt naar alle bestanden die beginnen met “calc-“, maar vindt alleen het gecomprimeerde bestand. Dat komt omdat, standaard, gzip maakt het archiefbestand aan en verwijdert het originele bestand.

Dat is geen probleem. Als u het originele bestand nodig heeft, kunt u het ophalen uit het archiefbestand. Maar als u liever het originele bestand wilt behouden, kunt u de -k (behouden) optie.

gzip -k calc-sheet.ods
ls -lh calc-sheet.*

Een bestand comprimeren en het originele bestand behouden

Deze keer blijft het originele ODS-bestand behouden.

Een bestand decomprimeren

Om een ​​GZ-archiefbestand te decomprimeren, gebruikt u de -d (decomprimeren) optie. Hiermee wordt het gecomprimeerde bestand uit het archief gehaald en gedecomprimeerd zodat het niet te onderscheiden is van het originele bestand.

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Een bestand decomprimeren met gzip

Deze keer kunnen we dat zien gzip heeft het archiefbestand verwijderd na het uitpakken van het originele bestand. Om het archiefbestand te behouden, moeten we de -k (bewaar) optie opnieuw, evenals de -d (decomprimeren) optie.

ls calc-sheet.*
gzip -d calc-sheet.ods.gz
ls calc-sheet.*

Een bestand decomprimeren en het archiefbestand behouden

Deze keer verwijdert gzip het archiefbestand niet.

Decomprimeren en overschrijven

Als u een bestand probeert uit te pakken in een map waar het originele bestand – of een ander bestand met hetzelfde – bestaat, gzip zal u vragen om te kiezen om de extractie te stoppen of om het bestaande bestand te overschrijven.

gzip -d text-file.txt.gz

Overschrijf prompt van gzip wanneer het bestand in het archief al bestaat in de map

Als je van tevoren weet dat je het bestand in de directory graag wilt laten overschrijven door het bestand uit het archief, gebruik dan de -f (force) optie.

gzip -df text-file.txt.gz

Overschrijven van een bestaand bestand forceren

Het bestand wordt overschreven en u keert in stilte terug naar de opdrachtregel.

Mapbomen comprimeren

De -r (recursieve) optie oorzaken gzip om de bestanden in een volledige mappenboom te comprimeren. Maar het resultaat is misschien niet wat je verwacht.

Dit is de directorystructuur die we in dit voorbeeld gaan gebruiken. De mappen bevatten elk een tekstbestand.

tree level1

Mapboomstructuur testen

Laten we gebruiken gzip in de mappenboom en kijk wat er gebeurt.

gzip -r level1/
tree level1

Directorystructuur nadat gzip erop is uitgevoerd

Het resultaat is gzip heeft voor elk tekstbestand in de directorystructuur een archiefbestand aangemaakt. Het creëerde geen archief van de volledige mappenboom. In werkelijkheid, gzip kan slechts één bestand in een archief plaatsen.

We kunnen een archiefbestand maken dat een mappenboom en al zijn bestanden bevat, maar we moeten een ander commando in het spel brengen. De tar programma wordt gebruikt om archieven van veel bestanden te maken, maar het heeft geen eigen compressieroutines. Maar door de juiste opties te gebruiken met tarwe kunnen veroorzaken tar om het archiefbestand door te duwen gzip. Op die manier krijgen we een gecomprimeerd archiefbestand en een archief met meerdere bestanden of meerdere mappen.

tar -czvf level1.tar.gz level1

De tar opties zijn:

  • c: Maak een archief aan.
  • z: Duw de bestanden door gzip.
  • v: Uitgebreide modus. Print in het terminalvenster wat? tar is aan.
  • f niveau1.tar.gz: Bestandsnaam die moet worden gebruikt voor het archiefbestand.

Uitvoer van tar die zich een weg baant door de mappenboom

Hiermee worden de mappenboomstructuur en alle bestanden in de mappenboom gearchiveerd.

Informatie krijgen over archieven

De -l (lijst) optie geeft wat informatie over een archiefbestand. Het toont u de gecomprimeerde en ongecomprimeerde grootte van het bestand in het archief, de compressieverhouding en de naam van het bestand.

gzip -l leve1.tar.gz
gzip -l text-file.txt.gz

De optie -l list gebruiken om compressiestatistieken voor een archief te bekijken

U kunt de integriteit van een archiefbestand controleren met de -t (test) optie.

gzip -t level1.tar.gz

Een archief testen met de -t optie

Als alles goed is, keert u in stilte terug naar de opdrachtregel. Geen nieuws is goed nieuws.

Als het archief corrupt is of geen archief, wordt u hierover geïnformeerd.

gzip -t not-an-archive.gz

De optie -t gebruiken om een ​​bestand te testen dat geen archief is

Snelheid versus compressie

U kunt ervoor kiezen om prioriteit te geven aan de snelheid van het maken van het archief of de mate van compressie. Dit doe je door als optie een nummer op te geven, van -1 door boven -9. De -1 optie geeft de hoogste snelheid ten koste van compressie en -9 geeft de hoogste compressie ten koste van snelheid.

Tenzij u een van deze opties opgeeft, gebruikt gzip -6.

gzip -1 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -9 calc-sheet.ods
ls -lh calc-sheet.ods.gz
gzip -6 calc-sheet.ods
ls -lh calc-sheet.ods.gz

Gzip gebruiken met verschillende prioriteiten voor snelheid en compressie

Met een bestand zo klein als dit zagen we geen significant verschil in uitvoeringssnelheid, maar er was een klein verschil in compressie.

Interessant is dat er geen verschil is tussen het gebruik van compressie van niveau 9 en compressie van niveau 6. Je kunt alleen zoveel compressie uit een bepaald bestand wringen en in dit geval werd die limiet bereikt met compressie van niveau 6. Door het op 9 te zetten, werd de bestandsgrootte niet verder verminderd. Bij grotere bestanden zou het verschil tussen niveau 6 en niveau 9 meer uitgesproken zijn.

Gecomprimeerd, niet beschermd

Verwar compressie niet met codering of enige vorm van bescherming. Het comprimeren van een bestand geeft het geen veiligheid of verbeterde privacy. Iedereen met toegang tot uw bestand kan gebruikmaken van gzip om het te decomprimeren.

Nieuwste artikelen

Gerelateerde artikelen