tar(1) komanda je GNU tape arhiver. Uzima nekoliko fajlova
ili direktorijuma i stvara jedan veliki fajl. Ovo nam omogućava da kompresujemo celo
stablo direktorijuma, što je nemoguće učiniti koristeći samo gzip ili bzip2 naredbu. tar komanda ima dosta opcija koje su objašnjene na njenoj man
strani, Ovaj deo će objasniti samo najosnovnije stvari tar
naredbe.
Uobičajeno se tar naredba koristi da se dekompresuje i
raspakuje paket koji je preuzet sa web ili ftp sajta. Većina fajlova dolazi sa
ekstenzijom .tar.gz. Ova vrsta arhiva se uobičajeno naziva
“tarball”. To znači da je nekoliko fajlova arhivirano pomoću tar naredbe i potom kompresovano pomoću gzip naredbe. Takođe, možete se sresti sa .tar.Z fajlovima. To je ista vrsta arhiva kao prethodna ali se
uobičajeno može sresti na starijim Unix sistemima.
Takođe, mogu se naći i fajlovi sa .tar.bz2
ekstenzijom.. Kernel source se distribuira na takav način jer predstavlja manju
količinu za skidanje. Kao što se može pretpostaviti ova vrsta fajlova
predstavlja više fajlova arhiviranih tar naredbom a zatim
kompresovano bzipom.
Može se pristupiti svim fajlovima u ovoj arhivi koristeći tar i određene argumente u komandnoj liniji. Raspakivanje
tarball-a se vrši korišćenjem opcije -z
,
što znači da se fajl prvo propusti kroz gunzip i
dekompresuje se. Najuobičajeniji način da raspakujete tarball je na primer:
% tar -xvzf filename.tar.gz
|
Postoji prilično mnogo parametara. Ali šta sve oni znače? -x
parametar znači ekstrahovanje ili vađenje. Ovo je
važno iz razloga što govori tar komandi tačno
šta da radi sa ulaznim fajlom. U ovom slučaju mi ćemo razdvojiti ulazni
fajl na njegove početne elemente, tj. fajlove od kojih je napravljen. -v
parametar znači verbose ili opširno. Ova opcija
će izlistati sve fajlove koji se dearhiviraju. Skroz je prihvatljivo da se ova
opcija izostavi, Takodje, može se koristiti -vv
parametar koji još opširnije predstavlja podatke koji se raspakivaju. -z
parametar govori tar komandi da
provuče filename.tar.gz kroz gunzip naredbu.I na kraju -f
opcija
govori tar komandi da je sledeći niz znakova unetih u
komandnu liniju fajl nad kojim se vrši operacija.
Postoji još nekoliko različitih načina da se napiše ova komanda.
Na starijim sistemima bez adekvatne GNU tar komande, možete
je videti napisanu ovako:
% gunzip filename.tar.gz | tar -xvf -
|
Ova naredba će dekompresovati fajl i izlaz poslati tar
komandi. Pošto će gzip naredba da pošalje
rezultat na standardni izlaz ako joj se kaže, ova naredba će ispisati
dekompresovan fajl na standardni izlaz. Pipe će ga onda poslati tar komandi na dearhiviranje. “-” znači da se
operacije vrše na standardnom ulazu. To će dearhivirati tok podataka koji se
dobije od gzip komande i zapisati na disk.
Još jedan način da se napiše cela komanda je da se izostavi crtica pre
navodjenja parametara, kao naprimer:
% tar xvzf filename.tar.gz
|
Možete takođe naleteti na bzip-ovane arhive. Verzija tar komande koja dolazi uz Slackware Linux može da barata njima
isto kao sa gzip-ovanim arhivama. Umesto -z
opcije koristi se
-j
parametar:
% tar -xvjf filename.tar.bz2
|
Važno je naglasiti da će tar naredba smestiti
dearhivirane fajlove u trenutni direktorijum. Tako da, ako imate arhivu u /tmp koju želite da dekompresijete u vaš home
direktorijum, imate na raspolaganju nekoliko opcija. Prvo, arhivu možete premestiti
u svoj home direktorijum. i onda je propustiti kroz tar naredbu.
Drugo, možete srecificirati putanju do arhive u komandnoj liniji. Treće,
možete koristiti -C
opciju da “raširi”
tarball u naznačenom direktorijumu.
% 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 primeri su istovetni. U svakom od navedenih slučajeva arhiva je
otpakovana unutar vašeg početnog (home) direktorijuma i originalna
dekompresovana arhiva je postavljena na mesto.
Ali šta nam znači da možemo da dekompresujemo ove arhive ako ne
možemo da ih kreiramo? Dakle, tar komanda je takodje
odgovorna za kreiranje arhiva. U većini slučajeva to je jednostavno kao
što je uklanjanje “-x
” parametra i njegova
zamena sa “-c
” parametrom.
% tar -cvzf filename.tar.gz .
|
U ovoj naredbi -c
parametar govori tar komandi da kreira arhivu, dok -z
parametar provlači rezultujući fajl kroz gzip naredbu
da bi ga kompresovao. filename.tar.gz je naziv fajla koji
želite da kreirate.
Navođenje “-f
” parametra nije uvek
potrebno,ali se smatra dobrom praksom. Bez njega, tar komanda
piše na standardni izlaz što je poželjno kada se izlaz tar komande koristi kao ulaz drugog programa, tzv. pipe. Kao na
primer.
% tar -cv filename.tar . | gpg --encrypt
|
Ova komanda kreira nekompresovanu tar arhivu od sadržaja tekućeg
direktorijuma, pipe-uje tarball kroz gpg program koji enkriptuje
i kompresuje tarball, čineći nemogućim da ga iko drugi pročita ili
koristi osim osobe koja poseduje tajni ključ.