4. Arhiveerimine ja andmete tihendamine

4.1. tar: lindiarhiveerija (Tape ARchiver)

Nagu find, on ka tar väga vana UNIX® utiliit, mistõttu selle süntaks on omajagu spetsiifiline. See näeb välja selline:

tar [võtmed] [failid...]

Toome siin ära mõned võtmed. Pange tähele, et kõigil neil on ka vastavad pikemad analoogid, aga selleks vaadake juba manuaalilehekülge tar(1).

[Märkus]Märkus

tar ei kasuta enam lühivõtmete puhul eelnevat kriipsu -, seda kasutatakse ainult pikkade võtmete korral.

  • c: uute arhiivide loomiseks.

  • x: failide ekstraktimiseks olemasolevast arhiivist.

  • t: olemasoleva arhiivi failide nimekirja loomiseks.

  • v: niinimetatud jutukuse suurendamine. Näidatakse arhiivi lisatavate või sealt ekstraktitavate failide nimesid. Kui seda kasutada koos võtmega t (vt. eespool), näidatakse lühikese failide nimekirja asemel pikka.

  • f <failinimi>: arhiivi loomine nimega failinimi, ekstraktib failid arhiivist failinimi või näitab arhiivi failinimi failide nimekirja. Kui see parameeter ära jätta, on vaikefailiks /dev/rmt0, mis on üldjuhul spetsiaalne striimeriga seotud fail. Kui failiparameetriks on - (kriips), seostatakse sisend või väljund (sõltuvalt sellest, kas loote arhiivi või ekstraktite) standardsisendi või -väljundiga.

  • z: annab tar'ile teada, et loodav arhiiv tuleb tihendada gzip'iga või et ekstraktitav arhiiv on tihendatud gzip'iga.

  • j: sama, mis z, ainult et tihendamiseks kasutatakse programmi bzip2.

  • p: failide ekstraktimisel arhiivist säilitatakse kõik faili atribuudid, kaasa arvatud omanik, viimase kasutamise aeg ja nii edasi. Väga kasulik failisüsteemi tõmmiste korral.

  • r: lisab käsureal antud failide nimekirja olemasolevale arhiivile. Arvestage, et arhiiv, millele soovite faile lisada, ei tohi olla tihendatud!

  • A: lisab käsureal antud arhiivid arhiivi, mis antakse võtmega f. Sarnaselt võtmele r ei tohi ka selle puhul arhiivid olla tihendatud.

Võtmeid on veel terve hulk, kõigi nendega aitab tutvuda manuaalilehekülg tar(1). Vaadake näiteks võtit d.

Võtame nüüd ette näite. Oletame, et soovite luua arhiivi kõigi kataloogis /shared/pildid leiduvate piltidega, tihendada selle programmiga bzip2, anda sellele nimeks pildid.tar.bz2 ning paigutada loodud faili kataloogi /home. Selleks tuleb anda selline käsk:

 #
 # Märkus: Te peate viibima kataloogist, mille faile
 #   soovite arhiveerida!
 #
$ cd /shared
$ tar cjf ~/pildid.tar.bz2 pildid/

Nagu näete, kasutasime siin kolme võtit: c andis tar'ile teada, et soovime luua arhiivi, j andis korralduse tihendada see bzip2'iga ja f ~/pildid.tar.bz2 korralduse luua arhiiv meie kodukataloogis nimega pildid.tar.bz2. Nüüd kontrollime, kas loodud arhiiv on ikka korrektne. Selleks saab lasta näiteks loetleda selle failid:

 #
 # Suunduge oma kodukataloogi
 #
$ cd
$ tar tjvf pildid.tar.bz2

Siin andsime tar'ile korralduse loetleda (t) failid arhiivis pildid.tar.bz2 (f pildid.tar.bz2), hoiatasime, et arhiiv on tihendatud bzip2'iga (j) ja teatasime, et soovime pikka nimekirja (v). Oletame nüüd, et kustutasite kogemata või mingil põhjusel oma pildikataloogi. Õnneks on Teil aga arhiiv alles ja soovite nüüd selle ekstraktida, et saada failid tagasi sinna, kus nad algselt olid (/shared alamkataloogis). Aga kuna Te soovite ka edaspidi kasutada find'i uute piltide leidmise käsku, siis on vaja säilitada ka kõik failide atribuudid:

 #
 # cd kataloogi, kuhu soovite arhiivi ekstraktida
 #
$ cd /shared
$ tar jxpf ~/pildid.tar.bz2

Ja asi ants!

Oletame nüüd, et soovite arhiivist ekstraktida ainult ja ainult kataloogi /pildid/autod. Selleks tuleb anda käsk:

$ tar jxf ~/pildid.tar.bz2 pildid/autod

Kui üritate varudanda spetsiaalseid faile, võtabki tar neid spetsiaalsete failidena ega ürida nende sisust tõmmist teha, Sestab võite julgelt arhiveerida näiteks /dev/mem. Programm tuleb väga edukalt toime ka viitadega, nii et needki ei valmista muret. Nimeviitade kohta tasuks tutvuda võtmega h (vaadake manuaalilehekülge).

4.2. bzip2 and gzip: andmete tihendamise programmid

Me puutusime nende utiliitidega kokku juba tar'i juures. Erinevalt näiteks Windows® keskkonnas kasutatavast rakendusest WinZip® käib arhiveerimine ja tihendamine kahe erineva utiliidiga: tar on mõeldud arhiveerimiseks ja kaks programmi, mida kohe tutvustame, tihendamiseks: bzip2 ja gzip. Te võite muidugi kasutada ka muid tihendamistööriistu: GNU/Linuxile on olemas ka zip, arj ja rar, kuigi neid kasutatakse harva.

Algselt loodi bzip2 utiliidi gzip asendajaks. Selle tihendustase on üldiselt parem, kuid samas nõuab see töötamise ajal märksa rohkem ressursse. Vanemate süsteemidega ühilduvuse tagamiseks on gzip endiselt kasutusel.

Mõlemal käsul on sarnane süntaks:

gzip [võtmed] [failid]

Kui failinimi andmata jätta, pöörduvad nii gzip kui bzip2 andmeid otsides standardsisendi poole ja saadavad oma tulemuse standardväljundisse. Seepärast saab mõlemat programmi kasutada ka torudes. Mõlemal on ka ühised võtmed:

  • -1 ... -9: tihendustaseme määramine. Mida suurem arv, seda parem tihendus, aga parem tähendab ka aeglasemat.

  • -d: failide lahtipakkimine. See võrdub programmide gunzip või bunzip2 kasutamisega.

  • -c: parameetrina antud failide tihendamise/lahtipakkimise tulemus saadetakse standardväljundisse.

[Hoiatus]Hoiatus

Vaikimisi kustutavad nii gzip kui ka bzip2 faili(d), mida nad tihendavad või lahti pakivad, kui Te ei kasuta just võtit -c. bzip2 korral saab seda vältida võtmega -k, gzip'il sellele vastavat võtit pole.

Võtame nüüd ette näited. Oletame, et soovite tihendada aktiivses kataloogis kõik laiendiga .txt failid ja kasutada selleks programmi bzip2 maksimaalse tihendusega. Selleks tuleb anda käsk:

$ bzip2 -9 *.txt

Nüüd oletame, et soovite jagada kellegagi oma pildiarhiivi, aga tal ei ole programmi bzip2, vaid ainult gzip. Selleks ei ole vaja arhiivi lahti ja uuesti kokku pakkida, vaid selle võib lahti pakkida standardväljundisse, suunata see torusse, tihendada standardväljund ja suunata väljund uude arhiivi. See käib nii:

bzip2 -dc pildid.tar.bz2 | gzip -9 >pildid.tar.gz

Te võite ka bzip2 -dc asemel kirjutada bzcat. Programmile gzip on samuti samasugune asendaja olemas, aga selle nimi on zcat, mitte gzcat. Kui soovite tihendatud faile mitte lahti pakkida, vaid neid otse vaadata, võite kasutada programme bzless bzip2 ja zless gzip puhul. Proovige nüüd näiteks leida iseseisvalt käsk, milega vaadata tihendatud faile ilma neid lahti pakkimata ja ilma programme bzless või zless kasutamata.