Poglavlje 15 Arhivske datoteke Tabela sadraja 15.1 gzip 15.2 bzip2 15.3 tar 15.4 zip 15.1 gzip gzip je GNU program za kompresiju. Uzima jednu datoteku i kompresira ju. Osnovno korištenje je kao što slijedi: gzip datoteka Rezultirajuća datoteka biti će imenovana kao datoteka.gz i obično će biti manja nego datoteka koju smo odlučili kompresirati. Primjetite da će datoteka.gz zamijeniti datoteka. To znači da datoteka više neće postojati, ali gzip-ana datoteka hoće. Obične tekstualne datoteke uredno će se kompresirati, dok se jpeg slike, mp3 i slične datoteke neće previše jer su već kompresirane. Osnovna upotreba je balans između završne veličine i vremena koje je potrebno za kompresiju. Maksimalna kompresija može se postići na slijedeći način: gzip -9 imedatoteke Kompresija ove datoteke će potrajati malo duže, ali će rezultirajuća datoteka biti mala koliko god je to moguće. Korištenje nižih vrijednosti kao opcija rezultirati će bržom kompresijom, ali veličina datoteke neće biti toliko kompresirana kao kod prije navedene opcije. Dekompresija gzip-ane datoteke može se postići koristeći dvije naredbe, koje su zapravo isti program. gzip će dekompresirati bilo koju datoteku sa poznatom ekstenzijom. Neke od tih poznatih ekstenzija mogu biti: .gz, -gz, .z, -z, .Z, ili -Z. Prvi način je da se naredba gunzip primjeni na nekoj datoteci, poput: gunzip datoteka.gz Ta će naredba u trenutnom direktoriju ostaviti dekompresiranu verziju ulazne datoteke, a .gz ekstenzija biti će uklonjena iz imena datoteke. gunzip je zapravo dio gzip aplikacije i identičan je naredbi gzip -d. Kao takav, gzip se često izgovara gunzip, jer takav naziv izgleda cool. :^) 15.2 bzip2 bzip2 je alternativni program za kompresiju instaliran na Slackware Linux sustavu. Koristi drukčiji kompresijski algoritam od gzip, što rezultira nekih prednostima i nekim manama. Glavna prednost bzip2 je kompresirana veličina datoteke. bzip2 će skoro uvijek kompresirati bolje od gzip. U nekim slučajevima, ovo može rezultirati drastično manjim datotekama. To također može biti velika prednost korisnicima sa sporijim modemskim vezama. Također treba upamtiti, prilikom skidanja softvera sa javnih ftp servera, obično je dobro skidati .bz2 datoteke umjesto .gz datoteka, jer će takva praksa rezultirati manjim opterećenjem za darežljive ljude koji drže taj server. Mana bzip2 aplikacije je ta što zahtjeva više procesorske snage od gzip naredbe. To znači da če bzip-anje datoteke potrajati duže od gzip-anja i više će opteretiti procesor. Kada razmišljate koju aplikaciju za kompresiju koristiti, imajte u vidu brzinu kompresije, kao i završnu veličinu kompresirane datoteke te na osnovu toga prosudite što je važnije. Korištenje bzip2 naredbe je gotovo jednako poput gzip, te nećemo previše o tome diskutirati. Kao kod gunzip naredbe, bunzip2 je identičan bzip2 -d naredbi. Glavna razlika u svakidašnjoj upotrebi je ta da bzip2 koristi .bz2 ekstenziju. bzip2 datoteka bunzip2 datoteka.bz2 bzip2 -9 datoteka 15.3 tar tar(1) is the GNU tape archiver. Uzima nekoliko datoteka ili direktorija i kreira jednu veliku datoteku. To nam omogućava kompresiju cijelog stabla direktorija, što je nemoguće kod korištenja gzip ili bzip2 naredbi. tar naredba ima mnogo opcija, koje su objašnjene u njegovoj man stranici. Ovaj dio će pokriti samo najosnovnije stvari tar naredbe. Najčešća upotreba tar naredbe je kompresija i dekompresija paketa koji je skinut sa neke web ili ftp stranice. Većina datoteka dolazi sa .tar.gz ekstenzijom. Ovako arhivirana datoteka se obično naziva "tarball". To znači da su datoteke arhivirane upotrebom naredbe tar i zatim kompresirane sa gzip. Također, postoji mogućnost da se sretnete sa .tar.Z datotekama što je potpuno ista stvari, ali se obično sreće na starijim Unix sustavima. Također se mogu naći .tar.bz2 datoteke. Izvorni kod kernel-a se distribuira na taj način jer predstavlja manju količinu za skidanje. Kao što možete i pretpostaviti, ova vrsta datoteka predstavlja više datoteka arhiviranih tar naredbom, a zatim kompresiranih bzip naredbom. Svim ovim datotekama u arhivi može se pristupiti koristeći tar i određene argumente. tarball se može raspakirati korištenjem opcije -z, što znači da se datoteka prvo pokreće kroz gunzip i dekompresira se. Najčešći način za dekompresiju tarball-a je slijedeći: tar -xvzf filename.tar.gz Postoji velik broj opcija, no što one sve znače? -x znači ekstraktanje. To je važno jer govori tar naredbi što točno treba učiniti sa ulaznom datotekom. U ovom slučaju ćemo ulaznu datoteku razdvojiti na datoteke iz kojih je ona napravljena. -v znači verbose tj. opširno. To će izlistati sve datoteke koje se dearhiviraju. Potpuno je dozvoljeno ovu opciju izostaviti. Također se može koristiti -vv da, podatke koji se arhiviraju, pokaže još opširnije. -z opcija govori naredbi tar da datoteku filename.tar.gz prvo provede kroz gunzip. I na kraju, -f opcija naredbi tar govori da je slijedeći niz znakova unjetih u naredbenu liniju datoteka nad kojom se vrši operacija. Postoji još nekoliko drugih načina za izvršavanje ove iste naredbe. Na starijim sustavima sa starijom verzijom GNU tar, možete naredbu vidjeti napisanu ovako: gunzip filename.tar.gz | tar -xvf - Ova će naredba dekompresirati datoteku i izlaz poslati tar naredbi. Pošto će naredba gzip poslati rezultat na standardni izlaz (stdout) ako joj se kaže, ova će naredba ispisati dekompresiranu datoteku na standardni izlaz te će ju cijev (pipe) poslati tar naredbi na dearhiviranje. "-" znači vršenje operacija na standardnom ulazu (stdin). Dearhivirat će tok podataka koji se dobije od naredbe gzip i zapisati ga na disk. Drugi način da se napiše ta naredba je izostavljanje crtice prije navođenja argumenata: tar xvzf filename.tar.gz Također postoji mogućnost da naiđete na bzip-anu arhivu. Verzija tar aplikacije koja dolazi sa Slackware Linux-om može njima baratati jednako kao i sa gzip-anim arhivama. Umjesto opcije -z, koristi se -j opcija. tar -xvjf datoteka.tar.bz2 Također je važno naglasiti da će tar naredba dearhivirane datoteke smjestiti u trenutni tj. radni direktorij. Ako imate arhivu u /tmp direktoriju koju želite dekompresirati u vaš home direktorij, imate na raspolaganju nekoliko opcija. Prva je ta da arhivu premjestite u svoj home direktorij i onda je pokrenuti kroz tar naredbu. Također možete specificirati putanju do arhive u naredbenoj liniji. Još postoji mogučnost korištenja -c opcije koja "raširi" tarball u označenom direktoriju. cd $HOME cp /tmp/filename.tar.gz . tar -xvzf filename.tar.gz cd $HOME tar -xvzf /tmp/filename.tar.gz cd / tar -xvzf /tmp/filename.tar.gz -C $HOME Svi gore navedeni primjeri su jednaki. U svakom pojedinom slučaju, arhiva je otpakirana unutar vašeg home direktorija i originalna dekompresirana datoteka je postavljena na mjesto. Ali što nam znači to što imamo mogučnost da dekompresiramo te arhive ako ih ne možemo kreirati? tar naredba je također odgovorna za kreiranje arhiva. U većini slučajeva je to jednostavno kao zamjenjivanje "-x" opcije sa "-c" opcijom. tar -cvzf filename.tar.gz U ovoj naredbi, -c opcija govori tar naredbi da stvori arhivu, dok -z opcija pokreće rezultirajuću datoteku kroz gzip naredbu da bi ju kompresirala. filename.tar.gz je naziv datoteke koju želite stvoriti. Navođenje "-f" opcije nije uvijek potrebno, ali se smatra dobrom praksom. Bez nje, tar naredba piše na standardni izlaz što je poželjno kada se izlaz tar naredbe koristi kao ulaz drugog programa, tzv. pipe. Na primjer: tar -cv datoteka.tar . | gpg --encrypt Ta naredba kreira nekompresiranu tar arhivu u trenutnom direktoriju, pipe-a tarball kroz gpg koji enkriptira i kompresira tarball, čineći nemogućim da ga pročita itko drugi osim osobe koja posjeduje tajni ključ. 15.4 zip Na kraju, postoje dva alata koja se mogu upotrebljavati za baratanje zip datotekama. Jako su česti u Windows svijetu, tako da Linux ima programe sa kojima može njima manipulirati. Program za kompresiju zove se zip, a dekompresijski program unzip. zip foo * Ovo će stvoriti datoteku foo.zip, koja će sadržavati sve datoteke iz trenutnog direktorija. zip će automatski dodati .zip ekstenziju, tako da nema potrebe za uključivanjem iste u naziv datoteke. Također se možete vratiti nazad u trenutni direktorij i zip-ati sve direktorije koji se tamo nalaze: zip -r foo * Dekompresija zip datoteka je također jednostavna: unzip foo.zip Ova će naredba ekstraktati sve datoteke iz foo.zip arhive uključujući i direktorije. zip alati imaju nekoliko naprednih opcija za kreiranje samoraspakiravajućih arhiva, izostavljanje datoteka, kontroliranje veličine kompresirane datoteke, itd. Pogledajte man stranicu za zip i unzip i saznajte kako koristiti te opcije.