Linux -filkomprimeringsalternativ och jämförelse

Linux File Compression Options



Komprimering är i allmänhet en användbar metod som i huvudsak kodar information med mindre data än den ursprungliga. När det gäller Linux finns det olika komprimeringsalternativ, var och en med sina egna fördelar.

En generisk Linux -distro erbjuder tillgång till en handfull riktigt användbara och enkla komprimeringsmekanismer. Denna artikel kommer bara att fokusera på dem.







Kompressionstyper

Komprimering kodar och representerar information med färre bitar än den ursprungligen var. När det gäller filkomprimering använder en komprimeringsmetod sin egen algoritm och matematiska beräkning för att generera en utdata som i allmänhet är mindre än originalfilens storlek. På grund av hur olika komprimering fungerar och filernas slumpmässiga natur kan körsträckan variera mycket.



Det finns 2 typer av komprimering.



  • Förlorad kompression : Detta är en riskfylld typ av komprimering som inte garanterar dataintegritet. I huvudsak finns det en risk att originalfilen inte kan rekonstrueras med hjälp av det komprimerade arkivet när det väl är komprimerat.
    Ett bra exempel på denna typ av komprimering är det välkända MP3-formatet. När en MP3 skapas från den ursprungliga ljudfilen är den betydligt mindre än den ursprungliga musikfilen. Detta orsakar förlust av viss ljudkvalitet.
  • Förlustfri komprimering : Detta är den mest använda komprimeringstypen. Med en förlustfri komprimeringsmetod kan originalfilen rekonstrueras från den komprimerade filen. Komprimeringsmetoderna som jag kommer att diskutera i den här artikeln är alla förlustfria komprimeringsmetoder.

Linux -komprimering

Majoriteten av komprimeringsmetoderna är tillgängliga från verktyget tar . När det gäller zip -komprimering kommer vi att använda blixtlås verktyg. Om vi ​​antar att ditt system redan har dessa verktyg installerade, låt oss komma igång.





Till en början behöver vi en testfil. Kör följande kommando för att skapa ett.

$bas64/dev/urandom| huvud -c 20000000 >file.txt



Det skapar en textfil med en storlek på 20 MB.

Låt oss nu skapa 10 kopior av filen. Tillsammans är det 200 MB.

Dragkedja för komprimering

Zip är ganska vanligt. För att skapa en zip -fil kräver zip -verktyget följande kommandostruktur.

$blixtlås <produktion>.blixtlås<inmatning>

För att komprimera alla filer under testkatalogen i en enda zip -fil, kör det här kommandot.

$blixtlåstest.zip*

Ingångsstorleken var 200 MB. Efter komprimering är det nu 152 MB!

Som standard kommer zip -verktyget att använda DEFLATE -komprimeringen. Det är dock också kapabelt att använda bzip2 -komprimering. Inte nog med det, du kan också skapa lösenordsskyddade zip-filer! Läs mer om zip .

Tjära för komprimering på Linux

Tjära är inte en komprimeringsmetod. Istället används det oftast för att skapa arkiv. Det kan emellertid implementera ett antal populära komprimeringsmetoder i arkivet.

För hantering av tjärarkiv (även känt som tarball) finns det tjäraverktyget. Läs mer om tjära. I allmänhet använder tarverktyget följande kommandostruktur.

$tar <alternativ> <output_file> <inmatning>

Om du vill lägga till testfilerna i ett enda tjärarkiv kör du följande kommando.

$tar -cvftest.tar*

Här förblir filstorleken densamma.

Gzip för komprimering på Linux

GNU Zip eller gzip är en annan populär komprimeringsmetod som enligt min mening är bättre än den traditionella zipen på grund av dess bättre komprimering. Det är en öppen källkodsprodukt skapad av Mark Adler och Jean-Loup Gailly som ursprungligen var avsedd att ersätta UNIX komprimera verktyg.

För hantering av gzip -arkiv finns det två verktyg tillgängliga: tjära och gzip. Låt oss kolla in dem båda.

Först, gzip -verktyget. Så här ser kommandostrukturen gzip ut.

$gzip <alternativ> <inmatning>

Till exempel kommer följande kommando att ersätta test1.txt med test1.txt.gz komprimerad fil.

$gzip -vtest1.txt

Om du vill komprimera en hel katalog med gzip kör du det här kommandot. Här är -r -flaggan för rekursiv komprimering. Gzip går igenom alla mappar och komprimerar de enskilda filerna i var och en av dem.

$gzip -r <sökväg>

Gzip stöder olika värden för komprimeringsstyrka, från 1 (minst komprimering, snabbaste) till 9 (bästa komprimering, långsammaste).

$gzip -v -9 <fil>

För bättre kontroll över utmatningen och användarvänlighet är tjära bättre för uppgiften. Kör följande kommando.

$tar -cvzftest.tar.gz*

Resultatet liknar zip med DEFLATE, vilket resulterar i 152 MB efter komprimering.

Bzip2 för komprimering på Linux

Bzip2 är ett gratis verktyg med öppen källkod som använder Burrows-Wheeler-algoritmen för komprimering. Bzip2 introducerades första gången 1996 och används starkt som ett alternativ till gzip -komprimering.

Liksom gzip finns det två verktyg för att arbeta med bzip2: tjära och bzip2.

Verktyget bzip2 fungerar ungefär som gzip -verktyget. Det kan bara fungera med bara en enda fil åt gången. Här är kommandostrukturen.

$bzip2 <alternativ> <inmatning>

Låt oss komprimera filen test1.txt. Här är -v -flaggan för ordagrant läge.

$bzip2 -vtest1.txt

I likhet med gzip stöder bzip2 också olika komprimeringsnivåer, från 1 (standard, mindre minnesanvändning) till 9 (extrem komprimering, hög minnesanvändning).

$bzip2 -v -9 <fil>

Det bättre sättet att använda bzip2 -komprimering är att använda tjära. Använd följande kommando.

$tar -cvjftest.tar.bz2*

Komprimeringen är något förbättrad än de tidigare. Nu har filstorleken krympt till 151,7 MB.

XZ för komprimering på Linux

Det är en relativt nykomling inom komprimeringsområdet. Första gången den släpptes 2009, har användningen ökat stadigt sedan dess.

Xz -komprimeringsverktyget använder LZMA2 -algoritmen som är känd för större komprimeringsförhållande jämfört med gzip och bzip2, vilket gör det till ett utmärkt val när du vill spara maximal mängd diskutrymme. Detta kommer dock med kostnaderna för högre minneskrav och tidsförbrukning.

Filen som skapats av XZ -komprimeringsverktyget har tillägget .xz. För att komprimera en enda fil kan du ringa XZ -verktyget direkt.

$xz<alternativ> <fil>

Kör till exempel följande kommando för att komprimera filen test1.txt.

$xz-vtest1.txt

I likhet med andra nämnda komprimeringsmetoder stöder xz också olika kompressionsstyrkor, från 1 (lägsta kompression, snabbaste) till 9 (bästa komprimering, långsammaste). Om du inte har någon hänsyn till tid och bara vill spara utrymme, gå sedan till det extrema.

$xz-v -9 <fil>

Om du vill skapa en komprimerad XZ -fil från alla testfiler kör du det här kommandot.

$tar -cvJftest.tar.xz*

Här är utmatningsfilens storlek 153,7 MB.

Extrahera komprimerade arkiv

Att extrahera arkiven vi skapade är lättare än att skapa dem. För att extrahera en zip -fil, använd följande kommandostruktur.

$packa upp <filnamn>.blixtlås-d <destination>

För att extrahera det zip -arkiv vi skapade, kör det här kommandot. Detta kommer att extrahera allt innehåll i samma katalog.

$packa upptest.zip

För att extrahera tar, tar.gz, tar.bz2 och tar.xz arkiv måste vi använda tar verktyg. Följande tar -kommando är tillämpligt för att extrahera dem alla.

$tar -xvf <arkivfilnamn>

Låt oss till exempel extrahera alla filer från det komprimerade bz2 -arkivet.

$tar -xvftest.tar.bz2

För att dekomprimera en gzip -fil (inte tar.gz) kör du det här kommandot.

$gzip -d <gzip_file>

På samma sätt kommer följande kommando att dekomprimera bzip2 -arkivet.

$bzip2 -d <bzip2_file>

Samma kommandostruktur gäller för xz -arkiv.

$xz-d <xz_file>

Slutgiltiga tankar

Förhoppningsvis har du nu tillräckligt med kunskap för att hantera komprimeringsuppgifterna under olika omständigheter. Beroende på det specifika kravet erbjuder alla komprimeringsmetoder mycket attraktiva funktioner.

En viktig sak att notera är att komprimeringsresultatet inte kommer att vara detsamma hela tiden. Med olika datainmatningar blir utmatningen annorlunda. Till exempel kan xz i vissa fall erbjuda vansinnigt komprimeringsresultat medan det i det här exemplet inte gjorde det. Detsamma gäller andra metoder.

För att lära dig mer ingående om dessa verktyg, kolla in deras respektive man-sida.

$man blixtlås