Možnosti in primerjava stiskanja datotek Linux

Linux File Compression Options



Stiskanje je na splošno uporabna metoda, ki v bistvu kodira informacije z uporabo manj podatkov kot prvotna. V primeru Linuxa obstajajo različne možnosti stiskanja, od katerih ima vsaka svoje prednosti.

Splošna distribucija Linuxa ponuja dostop do peščice resnično uporabnih in enostavnih mehanizmov stiskanja. Ta članek se bo osredotočil le na njih.







Vrste stiskanja

Stiskanje je kodiranje in predstavljanje informacij z uporabo manj bitov, kot je bilo prvotno. V primeru stiskanja datotek metoda stiskanja uporablja lasten algoritem in matematični izračun za ustvarjanje izhoda, ki je na splošno manjši od velikosti izvirne datoteke. Zaradi različnih načinov stiskanja in naključne narave datotek se lahko kilometrina zelo razlikuje.



Obstajata 2 vrsti stiskanja.



  • Stiskanje z izgubo : To je tvegana vrsta stiskanja, ki ne zagotavlja celovitosti podatkov. V bistvu, ko je stisnjen, obstaja nevarnost, da prvotne datoteke ni mogoče obnoviti s stisnjenim arhivom.
    Trden primer te vrste stiskanja je dobro znani format MP3. Ko je MP3 ustvarjen iz izvirne zvočne datoteke, je bistveno manjši od izvirne izvorne glasbene datoteke. To povzroči izgubo kakovosti zvoka.
  • Stiskanje brez izgube : To je najpogosteje uporabljena vrsta stiskanja. Z uporabo metode stiskanja brez izgube je mogoče iz stisnjene datoteke rekonstruirati izvirno datoteko. Metode stiskanja, ki jih bom obravnaval v tem članku, so vse metode stiskanja brez izgube.

Stiskanje Linuxa

Večina načinov stiskanja je na voljo v orodju katran . Kar zadeva stiskanje zip, bomo uporabili zadrgo orodje. Predpostavimo, da ima vaš sistem že nameščena ta orodja, začnimo.





Najprej potrebujemo preskusno datoteko. Če želite ustvariti enega, zaženite naslednji ukaz.

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



Ustvaril bo besedilno datoteko velikosti 20 MB.

Ustvarimo 10 kopij datoteke. Skupaj je 200 MB.

Zadrga za stiskanje

Zip je precej pogost. Za ustvarjanje datoteke zip potrebuje orodje zip naslednjo strukturo ukazov.

$zadrgo <izhod>.zip<vnos>

Če želite vse datoteke v preskusnem imeniku stisniti v eno datoteko zip, zaženite ta ukaz.

$zadrgotest.zip*

Velikost vnosa je bila 200 MB. Po stiskanju je zdaj 152 MB!

Orodje zip privzeto uporabi stiskanje DEFLATE. Vendar pa lahko uporablja tudi stiskanje bzip2. Ne samo to, lahko ustvarite tudi zip datoteke, zaščitene z geslom! Več o zip .

Tar za stiskanje v Linuxu

Katran ni metoda stiskanja. Namesto tega se najpogosteje uporablja za ustvarjanje arhivov. Vendar pa lahko v arhiv implementira številne priljubljene metode stiskanja.

Za obdelavo arhiva tar (znanega tudi kot tarball) obstaja orodje tar. Več o tar. Na splošno orodje tar uporablja naslednjo ukazno strukturo.

$katran <opcije> <output_file> <vnos>

Če želite preskusne datoteke dodati v en sam arhiv tar, zaženite naslednji ukaz.

$katran -cvftest.tar*

Tukaj velikost datoteke ostaja enaka.

Gzip za stiskanje v Linuxu

GNU Zip ali gzip je še ena priljubljena metoda stiskanja, ki je po mojem mnenju zaradi boljšega stiskanja boljša od tradicionalne zip. Gre za odprtokodni izdelek, ki sta ga ustvarila Mark Adler in Jean-Loup Gailly in je bil prvotno namenjen zamenjavi UNIX-a stisniti uporabnost.

Za upravljanje arhivov gzip sta na voljo 2 orodja: tar in gzip. Oglejmo si oba.

Najprej orodje gzip. Evo, kako izgleda ukazna struktura gzip.

$gzip <možnost> <vnos>

Na primer, naslednji ukaz bo zamenjal test1.txt s stisnjeno datoteko test1.txt.gz.

$gzip -vtest1.txt

Če želite stisniti celoten imenik z gzipom, zaženite ta ukaz. Tukaj je zastavica -r namenjena rekurzivnemu stiskanju. Gzip bo pregledal vse mape in stisnil posamezne datoteke v vsaki od njih.

$gzip -r <mapa_pot>

Gzip podpira različne vrednosti kompresijske trdnosti, od 1 (najmanjša kompresija, najhitrejša) do 9 (najboljša kompresija, najpočasnejša).

$gzip -v -9 <mapa>

Za boljši nadzor nad izhodom in enostavnost uporabe je tar boljši za nalogo. Zaženite naslednji ukaz.

$katran -cvzftest.tar.gz*

Rezultat je podoben zip z uporabo DEFLATE, kar po stiskanju povzroči 152 MB.

Bzip2 za stiskanje v Linuxu

Bzip2 je brezplačno in odprtokodno orodje, ki uporablja algoritem Burrows-Wheeler za stiskanje. Prvič predstavljen leta 1996, se bzip2 močno uporablja kot alternativa stiskanju gzip.

Tako kot gzip obstajata dve orodji za delo z bzip2: tar in bzip2.

Orodje bzip2 deluje podobno kot orodje gzip. Deluje lahko samo z eno samo datoteko hkrati. Tu je ukazna struktura.

$bzip2 <možnost> <vnos>

Stisnimo datoteko test1.txt. Tukaj je zastavica -v za podroben način.

$bzip2 -vtest1.txt

Podobno kot gzip tudi bzip2 podpira različne stopnje stiskanja, od 1 (privzeto, manjša poraba pomnilnika) do 9 (ekstremno stiskanje, velika poraba pomnilnika).

$bzip2 -v -9 <mapa>

Boljši način uporabe stiskanja bzip2 je uporaba tar. Uporabite naslednji ukaz.

$katran -cvjftest.tar.bz2*

Stiskanje je nekoliko izboljšano kot prejšnje. Zdaj se je velikost datoteke zmanjšala na 151,7 MB.

XZ za stiskanje v Linuxu

Je relativno nov na področju stiskanja. Prvič izdan leta 2009, od takrat beleži stalno rast uporabe.

Orodje za stiskanje xz uporablja algoritem LZMA2, ki je znan po večjem stiskalnem razmerju v primerjavi z gzip in bzip2, zato je odlična izbira, če želite prihraniti največ prostora na disku. To pa je povezano s stroški višjih potreb pomnilnika in porabo časa.

Datoteka, ki jo je ustvarilo orodje za stiskanje XZ, ima razširitev .xz. Za stiskanje ene datoteke lahko neposredno pokličete orodje XZ.

$xz<možnost> <mapa>

Na primer, zaženite naslednji ukaz, da stisnete datoteko test1.txt.

$xz-vtest1.txt

Podobno kot pri drugih omenjenih metodah stiskanja tudi xz podpira različne vrste kompresijske trdnosti, od 1 (najnižja kompresija, najhitrejša) do 9 (najboljša kompresija, najpočasnejša). Če nimate časa in želite prihraniti prostor, pojdite na skrajnost.

$xz-v -9 <mapa>

Če želite ustvariti stisnjeno datoteko XZ iz vseh preskusnih datotek, zaženite ta ukaz.

$katran -cvJftest.tar.xz*

Tukaj je velikost izhodne datoteke 153,7 MB.

Izvlečenje stisnjenih arhivov

Izvlečenje arhivov, ki smo jih ustvarili, je lažje kot njihovo ustvarjanje. Če želite izvleči datoteko zip, uporabite naslednjo ukazno strukturo.

$razpakiraj <Ime datoteke>.zip-d <cilj>

Če želite izvleči zip arhiv, ki smo ga ustvarili, zaženite ta ukaz. To bo izvleklo vso vsebino v istem imeniku.

$razpakirajtest.zip

Za ekstrahiranje arhivov tar, tar.gz, tar.bz2 in tar.xz moramo uporabiti katran orodje. Naslednji ukaz tar je uporaben za njihovo ekstrahiranje.

$katran -xvf <archive_filename>

Na primer, izvlecimo vse datoteke iz stisnjenega arhiva bz2.

$katran -xvftest.tar.bz2

Če želite razpakirati datoteko gzip (ne tar.gz), zaženite ta ukaz.

$gzip -d <gzip_file>

Podobno bo naslednji ukaz razpakiral arhiv bzip2.

$bzip2 -d <bzip2_file>

Ista ukazna struktura velja za arhiv xz.

$xz-d <xz_file>

Končne misli

Upajmo, da imate zdaj dovolj znanja za reševanje nalog stiskanja v različnih okoliščinah. Odvisno od posebne zahteve vse metode stiskanja ponujajo zelo privlačne lastnosti.

Pomembno je omeniti, da rezultat stiskanja ne bo ves čas enak. Z drugačnim vnosom podatkov bo izhod drugačen. Na primer, v nekaterih primerih lahko xz ponudi nori rezultat stiskanja, v tem primeru pa ne. Enako velja za druge metode.

Če želite podrobneje izvedeti o teh orodjih, si oglejte njihovo ustrezno stran.

$človek zadrgo