Linux -filkomprimeringsindstillinger og sammenligning

Linux File Compression Options



Komprimering er generelt en nyttig metode, der i det væsentlige koder information ved hjælp af færre data end den oprindelige. I tilfælde af Linux er der forskellige komprimeringsmuligheder, hver med sine egne fordele.

En generisk Linux -distro giver adgang til en håndfuld virkelig nyttige og enkle komprimeringsmekanismer. Denne artikel vil kun fokusere på dem.







Kompressionstyper

Komprimering er kodning og repræsentation af information ved hjælp af færre bits end den oprindeligt var. I tilfælde af filkomprimering anvender en komprimeringsmetode sin egen algoritme og matematiske beregning til at generere et output, der generelt er mindre end størrelsen på den originale fil. På grund af hvordan forskellige komprimeringer fungerer og filernes tilfældige karakter, kan kilometertal variere meget.



Der er 2 former for komprimering.



  • Tabt kompression : Dette er en risikabel form for komprimering, der ikke garanterer dataintegritet. Når det først er komprimeret, er der en risiko for, at den originale fil ikke kan rekonstrueres ved hjælp af det komprimerede arkiv.
    Et solidt eksempel på denne type komprimering er det velkendte MP3-format. Når en MP3 oprettes fra den originale lydfil, er den betydeligt mindre end den originale kilde musikfil. Dette medfører tab af en vis lydkvalitet.
  • Tab uden komprimering : Dette er den mest anvendte type komprimering. Ved hjælp af en tabsfri komprimeringsmetode kan den originale fil rekonstrueres fra den komprimerede fil. De komprimeringsmetoder, jeg vil diskutere i denne artikel, er alle tabsfri komprimeringsmetoder.

Linux -komprimering

Størstedelen af ​​komprimeringsmetoderne er tilgængelige fra værktøjet tjære . Hvad angår zip -komprimering, bruger vi lynlås værktøj. Forudsat at dit system allerede har disse værktøjer installeret, lad os komme i gang.





Først skal vi bruge en testfil. Kør følgende kommando for at oprette en.

$base64/dev/urandom| hoved -c 20000000 >file.txt



Det opretter en tekstfil med en størrelse på 20 MB.

Lad os nu oprette 10 kopier af filen. Tilsammen er det 200 MB.

Lynlås til komprimering

Zip er ret almindeligt. For at oprette en zip -fil kræver zip -værktøjet følgende kommandostruktur.

$lynlås <produktion>.zip<input>

Hvis du vil komprimere alle filerne under testmappen i en enkelt zip -fil, skal du køre denne kommando.

$lynlåstest.zip*

Inputstørrelsen var 200 MB. Efter komprimering er det nu 152 MB!

Som standard anvender zip -værktøjet DEFLATE -komprimering. Det er dog også i stand til at bruge bzip2 -komprimering. Ikke nok med det, du kan også oprette adgangskodebeskyttede zip-filer! Lær mere om zip .

Tjære til komprimering på Linux

Tjære er ikke en komprimeringsmetode. I stedet bruges det oftest til oprettelse af arkiver. Det kan dog implementere en række populære komprimeringsmetoder til arkivet.

Til håndtering af tjære (også kendt som tarball) arkiv er der tjæreværktøjet. Lær mere om tjære. Generelt anvender tjæreværktøjet følgende kommandostruktur.

$tjære <muligheder> <output_fil> <input>

Hvis du vil tilføje testfilerne til et enkelt tar -arkiv, skal du køre følgende kommando.

$tjære -cvftest.tar*

Her forbliver filstørrelsen den samme.

Gzip til komprimering på Linux

GNU Zip eller gzip er en anden populær komprimeringsmetode, der efter min mening er bedre end den traditionelle zip på grund af dens bedre komprimering. Det er et open source-produkt skabt af Mark Adler og Jean-Loup Gailly, der oprindeligt var bestemt til at erstatte UNIX komprimere nytteværdi.

Til administration af gzip -arkiver er der 2 værktøjer til rådighed: tjære og gzip. Lad os tjekke dem begge.

Først gzip -værktøjet. Sådan ser kommandostrukturen gzip ud.

$gzip <mulighed> <input>

For eksempel vil følgende kommando erstatte test1.txt med test1.txt.gz komprimeret fil.

$gzip -vtest1.txt

Hvis du vil komprimere en hel mappe ved hjælp af gzip, skal du køre denne kommando. Her er -r -flag til rekursiv komprimering. Gzip vil gennemgå alle mapperne og komprimere de enkelte fil (er) i hver af dem.

$gzip -r <mappe_sti>

Gzip understøtter forskellige værdier for komprimeringsstyrke, startende fra 1 (mindst kompression, hurtigste) til 9 (bedste komprimering, langsomste).

$gzip -v -9 <fil>

For bedre kontrol over output og brugervenlighed er tjære bedre til opgaven. Kør følgende kommando.

$tjære -cvzftest.tar.gz*

Resultatet ligner zip ved hjælp af DEFLATE, hvilket resulterer i 152 MB efter komprimering.

Bzip2 til komprimering på Linux

Bzip2 er et gratis og open source-værktøj, der bruger Burrows-Wheeler-algoritmen til komprimering. Bzip2 blev først introduceret tilbage i 1996 og bruges stærkt som et alternativ til gzip -komprimering.

Ligesom gzip er der 2 værktøjer til at arbejde med bzip2: tjære og bzip2.

Bzip2 -værktøjet fungerer på samme måde som gzip -værktøjet. Det kan kun fungere med kun en enkelt fil ad gangen. Her er kommandostrukturen.

$bzip2 <mulighed> <input>

Lad os komprimere test1.txt -filen. Her er -v -flaget for en mere detaljeret tilstand.

$bzip2 -vtest1.txt

Ligesom gzip understøtter bzip2 også forskellige komprimeringsniveauer, fra 1 (standard, mindre hukommelsesforbrug) til 9 (ekstrem komprimering, høj hukommelsesforbrug).

$bzip2 -v -9 <fil>

Den bedre måde at bruge bzip2 -komprimering er ved at bruge tjære. Brug følgende kommando.

$tjære -cvjftest.tar.bz2*

Kompressionen er en smule forbedret end de tidligere. Nu er filstørrelsen skrumpet til 151,7 MB.

XZ til komprimering på Linux

Det er en relativ tilflytter inden for komprimering. Først udgivet i 2009, har den oplevet en jævn vækst i brugen siden da.

Xz -komprimeringsværktøjet bruger LZMA2 -algoritmen, der er kendt for et større komprimeringsforhold i forhold til gzip og bzip2, hvilket gør det til et godt valg, når du vil spare den maksimale mængde diskplads. Dette kommer dog med omkostningerne ved højere hukommelseskrav og tidsforbrug.

Fil oprettet af XZ -komprimeringsværktøjet har filtypenavnet .xz. For at komprimere en enkelt fil kan du direkte kalde XZ -værktøjet.

$xz<mulighed> <fil>

Kør f.eks. Følgende kommando for at komprimere filen test1.txt.

$xz-vtest1.txt

På samme måde som andre nævnte kompressionsmetoder understøtter xz også forskellige kompressionsstyrker, der starter fra 1 (laveste kompression, hurtigste) til 9 (bedste kompression, langsommeste). Hvis du ikke har nogen hensyntagen til tid og bare vil spare plads, så gå efter det ekstreme.

$xz-v -9 <fil>

Hvis du vil oprette en komprimeret XZ -fil fra alle testfilerne, skal du køre denne kommando.

$tjære -cvJftest.tar.xz*

Her er outputfilstørrelsen 153,7 MB.

Udtræk af komprimerede arkiver

Det er lettere at udtrække de arkiver, vi har oprettet, end at oprette dem. For at udpakke en zip -fil skal du bruge følgende kommandostruktur.

$pakke ud <filnavn>.zip-d <bestemmelsessted>

For at udtrække det zip -arkiv, vi har oprettet, skal du køre denne kommando. Dette udtrækker alt indhold i den samme mappe.

$pakke udtest.zip

Til udtrækning af tjære, tar.gz, tar.bz2 og tar.xz arkiver skal vi bruge tjære værktøj. Følgende tar -kommando er gældende for at udtrække dem alle.

$tjære -xvf <arkivfilnavn>

Lad os f.eks. Udtrække alle filerne fra det bz2 komprimerede arkiv.

$tjære -xvftest.tar.bz2

Hvis du vil dekomprimere en gzip -fil (ikke tar.gz), skal du køre denne kommando.

$gzip -d <gzip_file>

På samme måde dekomprimerer følgende kommando bzip2 -arkiv.

$bzip2 -d <bzip2_file>

Samme kommandostruktur gælder for xz -arkiv.

$xz-d <xz_file>

Endelige tanker

Forhåbentlig har du nu viden nok til at håndtere komprimeringsopgaverne under forskellige omstændigheder. Afhængigt af det specifikke krav tilbyder alle komprimeringsmetoderne meget attraktive funktioner.

En vigtig ting at bemærke er, at komprimeringsresultatet ikke vil være det samme hele tiden. Med forskellig dataindgang vil output være anderledes. For eksempel kan xz i nogle tilfælde tilbyde sindssygt komprimeringsresultat, mens det i dette eksempel ikke gjorde det. Det samme gælder andre metoder.

Hvis du vil lære mere detaljeret om disse værktøjer, kan du tjekke deres respektive mandside.

$mand lynlås