Gzip
Sissejuhatus
Linux keskkonna kaks enam kasutatavat arhiveerimiskäsku on tar
ja gzip
. Kui käsk tar
on eelkõige mõeldud arhiivide loomiseks, siis käsk gzip
on peamiselt kasutatav failide tihendamiseks ehk kokkupakkimiseks. Linuxi maailmas kasutatakse valdavalt just neid kahte käsku tihendatud arhiivide loomiseks. Esmalt lisatakse tar
käsuga failid arhiivi ning hiljem gzip
käsuga arhiiv tihendatakse.
Tihendamiseks kasutatakse DEFLATE
kadudeta pakkimise algoritmi, mis on kombinatsioon LZ77
ja Huffmani kodeerimisest
. Käsu rakendamisel toimub tihendamine alati, isegi kui tihendatud fail on sisendina saadud failist pisut suurem. Tihendamise aste sõltub sisendfailis sisalduvatest andmetest, kuid nt tekstilised andmed tihendatakse keskmiselt 60-70%.
Kasutamine
Käsu süntaks:
# gzip [options] [file(s)]
Käsu täitmise järel gzip
arhiveerib sisendina saadud faili ning seejärel tihendab loodud arhiivi. Käsu üks olulisemaid erinevusi tar
käsust on see, et ta ei liida sisendeid ühte faili kokku vaid loob iga sisendi jaoks oma arhiiv. Loodud arhiivile antakse sisendiks olnud faili nimi, mille lõppu lisatakse .gz
laiend. Sisendiks olnud fail aga kustutatakse.
Faili nime võib gzip
korral jätta sisendina ka andmata. Sellisel juhul võetakse sisendiks standartne sisendkanal, pakitakse ja tihendatakse selle sisu ning suunatakse edasi standartsesse väljundkanalisse.
Lahti pakitavad failid peavad lõppema .gz
laiendiga.
Olulisemad võtmed:
-d, --decompress Hõrendab, mitte ei tihenda
-h, --help Abiinfo kuvamine
-l, --list Tihendatud arhiivi sisu, maht ja tihenduse aste
-L, --license gzip versiooni number ja andmed litsentsi kohta
-N, --name Säilitab sisendi nime ja selle loomise aja
-n, --no-name Ei säilita sisendi nime ega selle loomise aega
-q, --quiet gzip töötab hoiatusi kuvamata
-r, --recursive Tihendab või hõrendab rekursiivselt etteantud kataloogis
-t, --test Arhiivi testimine terviklikkuse osas
-v --verbose Näitab, kui palju iga fail tihendatud on
-1, --fast Kiire tihendamine
-9, --best Kõrgeim tihenduse aste
Nagu eelnevalt sai mainitud, ei oska gzip
luua mitmest sisendist ühte tihendatud arhiivi ja seepärast kasutatakse arhiivi loomiseks enamasti tar
käsku. Samas oskab tar
kasutada läbi võtme -z
ka gzip
võimalusi, mis tähendab, et kohe peale arhiivi loomist saab see ka tihendatud. Kuid tuleb meeles pidada, et sellisel juhul .gz
laiendit faili nimele automaatselt ei lisata, seepärast tuleks see laiend juba tar
käsku kirjutada. Taoline käsk võiks siis näha välja selliselt:
# tar -czf arhiivi_nimi.tar.gz failid_arhiivi
Näited
Lihtne arhiivi loomine:
# gzip fail
Ühe failinime asemel võib anda ka mitu nime. Nimed võib asendada malliga. Järgnevas näites tihendatakse maksimaalse tihenduse astmega kõik jooksvas kataloogis olevad .txt laiendiga failid:
# gzip -9 *.txt
Järgnev näide tihendab kõik jooksvas kataloogis olevad failid ning näitab, kui palju on iga fail tihendatud:
# gzip -v *
fail1.txt 59.0% -- replaced with fail1.txt.gz
fail2.txt 59.0% -- replaced with fail2.txt.gz
Tihendatud arhiivide hõrendamine:
# gzip -d fail1.txt.gz fail2.txt.gz
Tihendatud arhiivi sisu, mahu ja tihenduse astme vaatamine:
# gzip -l fail.txt.gz
compressed uncompressed ratio uncompressed_name
482 1107 59.0% fail.txt
Oletame, et on tekkinud vajadus saada gzip
arhiivist bzip2
tihendatud arhiiv. Selleks ei ole vaja .gz
faili hõrendada, et see siis bzip2
käsuga uuesti tihendada. Kiirem moodus on kasutada .gz
faili hõrendamisel võtit -c
. Sellega tekitatakse arhiivi hõrendamisel väljund voog, mis antakse üle kanali bzip2
sisendiks ning sealt omakorda suunatakse tihendamise tulem .bz2
arhiivi.
# gzip -dc failid.tar.gz | bzip2 > failid.tar.bz2
Ebastandartne kasutus
Kuigi eelpool sai rõhutatud, et gzip
ei liida sisendina saadud faile üheks failiks kokku, ei ole see siiski päris õige. Teda on võimalik sundida tihendatud faile ühte arhiivi lisama. Näiteks saab seda teha järgmiste käskudega:
# gzip -c fail1.txt > fail.gz
# gzip -c fail2.txt >> fail.gz
Kasutatud kirjandus
Н. М. Войтов. Основы работы с Linux. ДМК Пресс (2010).
В. Костромин. Самоучитель Linux для пользователя. БХВ-Петербург (2003).
Phil Hughes. Linux For Dummies. Quick Reference, 2nd Edition. IDG Books (1998).
http://www.intuit.ru/department/os/baselinuxwork/4/11.html
http://en.wikipedia.org/wiki/DEFLATE
http://et.wikipedia.org/wiki/LZ77
http://et.wikipedia.org/wiki/Huffmani_kodeerimine
Autor
Ivo Kruusamäe AK21