Opcije i usporedba Linux datoteka za komprimiranje

Linux File Compression Options



Kompresija je općenito korisna metoda koja u biti kodira informacije koristeći manje podataka od izvornog. U slučaju Linuxa, postoje različite mogućnosti kompresije, svaka sa svojim prednostima.

Generički Linux distributer nudi pristup pregršt zaista korisnih i jednostavnih mehanizama kompresije. Ovaj će se članak usredotočiti samo na njih.







Vrste kompresije

Kompresija je kodiranje i predstavljanje informacija koristeći manje bitova nego što je izvorno bilo. U slučaju kompresije datoteke, metoda kompresije koristi vlastiti algoritam i matematički izračun za generiranje izlaza koji je općenito manji od veličine izvorne datoteke. Zbog načina na koji različita kompresija funkcionira i nasumične prirode datoteka, kilometraža se može uvelike razlikovati.



Postoje 2 vrste kompresije.



  • Kompresija s gubitkom : Ovo je rizična vrsta kompresije koja ne jamči integritet podataka. U biti, nakon komprimiranja postoji rizik da se izvorna datoteka ne može obnoviti pomoću komprimirane arhive.
    Čvrst primjer ove vrste kompresije je dobro poznati MP3 format. Kad se MP3 stvara od izvorne audio datoteke, znatno je manji od izvorne izvorne glazbene datoteke. To uzrokuje gubitak neke kvalitete zvuka.
  • Kompresija bez gubitaka : Ovo je najčešće korištena vrsta kompresije. Koristeći metodu kompresije bez gubitaka, izvorna se datoteka može rekonstruirati iz komprimirane datoteke. Metode kompresije o kojima ću govoriti u ovom članku su sve metode kompresije bez gubitaka.

Linux kompresija

Većina metoda kompresije dostupna je u alatu katran . Što se tiče zip kompresije, koristit ćemo zatvarač alat. Pretpostavimo da vaš sustav već ima instalirane te alate, počnimo.





U početku nam je potrebna testna datoteka. Pokrenite sljedeću naredbu da biste je stvorili.

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



Stvorit će tekstualnu datoteku veličine 20 MB.

Sada, stvorimo 10 kopija datoteke. Zajedno, to je 200 MB.

Zip za kompresiju

Zip je prilično čest. Za stvaranje zip datoteke, zip alatu je potrebna sljedeća struktura naredbi.

$zatvarač <izlaz>.zip<ulazni>

Da biste komprimirali sve datoteke u testnom direktoriju u jednu zip datoteku, pokrenite ovu naredbu.

$zatvaračtest.zip*

Ulazna veličina bila je 200 MB. Nakon kompresije, sada iznosi 152 MB!

Zip alat će prema zadanim postavkama primijeniti DEFLATE kompresiju. Međutim, također može upotrijebiti kompresiju bzip2. I ne samo to, možete stvoriti i zip datoteke zaštićene lozinkom! Saznajte više o zip -u .

Tar za kompresiju na Linuxu

Tar nije metoda kompresije. Umjesto toga, najčešće se koristi za stvaranje arhiva. Međutim, može implementirati brojne popularne metode kompresije u arhivu.

Za rukovanje arhivom tar (poznat i kao tarball) postoji alat tar. Saznajte više o tar. Općenito, tar alat koristi sljedeću naredbenu strukturu.

$katran <mogućnosti> <izlazna datoteka> <ulazni>

Da biste dodali testne datoteke u jednu tar arhivu, pokrenite sljedeću naredbu.

$katran -cvftest.tar*

Ovdje veličina datoteke ostaje ista.

Gzip za kompresiju na Linuxu

GNU Zip ili gzip još je jedna popularna metoda kompresije koja je, po mom mišljenju, bolja od tradicionalnog zip -a zbog svoje bolje kompresije. To je proizvod otvorenog koda koji su stvorili Mark Adler i Jean-Loup Gailly i koji je izvorno predodređen zamijeniti UNIX oblog korisnost.

Za upravljanje gzip arhivama dostupna su 2 alata: tar i gzip. Pogledajmo oboje.

Prvo, alat gzip. Evo kako izgleda naredbena struktura gzip.

$gzip <opcija> <ulazni>

Na primjer, sljedeća naredba zamijenit će test1.txt komprimiranom datotekom test1.txt.gz.

$gzip -vtest1.txt

Ako želite komprimirati cijeli direktorij pomoću gzipa, pokrenite ovu naredbu. Ovdje je oznaka -r namijenjena rekurzivnoj kompresiji. Gzip će proći kroz sve mape i komprimirati pojedinačne datoteke u svakoj od njih.

$gzip -r <folder_path>

Gzip podržava različite vrijednosti kompresijske čvrstoće, počevši od 1 (najmanja kompresija, najbrža) do 9 (najbolja kompresija, najsporija).

$gzip -v -9 <datoteka>

Za bolju kontrolu nad izlazom i jednostavnost upotrebe, tar je bolji za zadatak. Pokrenite sljedeću naredbu.

$katran -cvzftest.tar.gz*

Rezultat je sličan zip -u koristeći DEFLATE, što rezultira 152 MB nakon kompresije.

Bzip2 za kompresiju na Linuxu

Bzip2 je besplatan alat otvorenog koda koji koristi Burrows-Wheeler algoritam za kompresiju. Prvi put predstavljen 1996., bzip2 se uvelike koristi kao alternativa gzip kompresiji.

Kao i gzip, postoje 2 alata za rad s bzip2: tar i bzip2.

Alat bzip2 radi slično kao i alat gzip. Može raditi samo s jednom datotekom odjednom. Evo strukture naredbi.

$bzip2 <opcija> <ulazni>

Stisnimo datoteku test1.txt. Ovdje je -v zastavica za opširni način rada.

$bzip2 -vtest1.txt

Slično gzipu, bzip2 također podržava različitu razinu kompresije, počevši od 1 (zadano, manje korištenja memorije) do 9 (ekstremno sažimanje, velika upotreba memorije).

$bzip2 -v -9 <datoteka>

Bolji način korištenja kompresije bzip2 je korištenje tar. Upotrijebite sljedeću naredbu.

$katran -cvjftest.tar.bz2*

Kompresija je neznatno poboljšana u odnosu na prethodne. Sada se veličina datoteke smanjila na 151,7 MB.

XZ za kompresiju na Linuxu

To je relativno nov u području kompresije. Prvi put objavljen 2009. godine, od tada bilježi stalan rast korištenja.

Alat za kompresiju xz koristi algoritam LZMA2 koji je poznat po većem omjeru kompresije u odnosu na gzip i bzip2, što ga čini izvrsnim izborom kada želite uštedjeti maksimalnu količinu prostora na disku. Međutim, to dolazi s troškovima većih memorijskih zahtjeva i utroška vremena.

Datoteka stvorena alatom za kompresiju XZ ima nastavak .xz. Za sažimanje jedne datoteke možete izravno pozvati alat XZ.

$xz<opcija> <datoteka>

Na primjer, pokrenite sljedeću naredbu za sažimanje datoteke test1.txt.

$xz-vtest1.txt

Slično drugim spomenutim metodama kompresije, xz također podržava različite raspone tlačne čvrstoće, počevši od 1 (najniža kompresija, najbrža) do 9 (najbolja kompresija, najsporija). Ako nemate nikakvog obzira prema vremenu i samo želite uštedjeti prostor, idite na krajnost.

$xz-v -9 <datoteka>

Da biste stvorili komprimiranu XZ datoteku od svih testnih datoteka, pokrenite ovu naredbu.

$katran -cvJftest.tar.xz*

Ovdje je veličina izlazne datoteke 153,7 MB.

Izdvajanje komprimiranih arhiva

Izdvajanje arhiva koje smo stvorili lakše je nego njihovo stvaranje. Za izdvajanje zip datoteke upotrijebite sljedeću naredbenu strukturu.

$otvoriti rajsfešlus <naziv datoteke>.zip-d <odredište>

Da biste izdvojili zip arhivu koju smo stvorili, pokrenite ovu naredbu. Ovo će izdvojiti sav sadržaj u istom direktoriju.

$otvoriti rajsfešlustest.zip

Za izdvajanje arhiva tar, tar.gz, tar.bz2 i tar.xz moramo koristiti katran alat. Sljedeća naredba tar primjenjiva je za izdvajanje svih njih.

$katran -xvf <archive_filename>

Na primjer, izdvojimo sve datoteke iz bz2 komprimirane arhive.

$katran -xvftest.tar.bz2

Da biste dekomprimirali datoteku gzip (ne tar.gz), pokrenite ovu naredbu.

$gzip -d <gzip_file>

Slično, sljedeća naredba će dekomprimirati bzip2 arhivu.

$bzip2 -d <bzip2_datoteka>

Ista naredbena struktura vrijedi i za xz arhivu.

$xz-d <xz_datoteka>

Završne misli

Nadajmo se da sada imate dovoljno znanja za rješavanje zadataka kompresije u različitim okolnostima. Ovisno o specifičnim zahtjevima, sve metode kompresije nude vrlo atraktivne značajke.

Važno je napomenuti da rezultat kompresije neće biti isti cijelo vrijeme. S različitim ulazima podataka, izlaz će biti drugačiji. Na primjer, u nekim slučajevima xz može ponuditi ludi rezultat kompresije, dok u ovom primjeru nije. Isto vrijedi i za ostale metode.

Da biste detaljnije saznali o tim alatima, pogledajte njihovu odgovarajuću stranicu s ljudima.

$čovjek zatvarač