Tar datoteke predstavljaju komprimovane arhive. Često ćete se susresti sa njima kada koristite Linux distribuciju, kao što je Ubuntu, ili čak dok radite u terminalu na macOS-u. U ovom tekstu objašnjeno je kako da izvučete—ili raspakujete—sadržaj iz tar datoteke, poznate i kao tarball.
Značenje .tar.gz i .tar.bz2 ekstenzija
Datoteke sa ekstenzijama .tar.gz ili .tar.bz2 su komprimovane arhivske datoteke. Datoteka samo sa ekstenzijom .tar nije komprimovana, ali je takav slučaj izuzetno redak.
Deo ekstenzije datoteke „.tar“ označava arhivu trake, i zato se obe vrste datoteka nazivaju tar datotekama. Tar datoteke su nastale još 1979. godine, kada je kreirana naredba tar kako bi se sistemskim administratorima omogućilo arhiviranje datoteka na traku. Četrdeset godina kasnije, i dalje koristimo naredbu tar za izdvajanje tar datoteka na naše čvrste diskove. Neko negde verovatno još uvek koristi tar sa trakom.
Sufiks ekstenzije .gz ili .bz2 označava da je arhiva komprimovana korišćenjem algoritma za kompresiju gzip ili bzip2. Naredba tar će funkcionisati dobro sa obe vrste datoteka, tako da nije bitno koji je metod kompresije korišćen – i trebalo bi da bude dostupna svuda gde imate Bash ljusku. Samo treba da koristite odgovarajuće opcije komandne linije tar.
Ekstrakcija datoteka iz Tar arhiva
Pretpostavimo da ste preuzeli dve arhive sa notama. Jedna datoteka se zove ukulele_songs.tar.gz, a druga guitar_songs.tar.bz2. Ove datoteke se nalaze u direktorijumu Preuzimanja.
Hajde da ekstrahujemo pesme za ukulele:
tar -xvzf ukulele_songs.tar.gz
Tokom ekstrakcije, nazivi datoteka se ispisuju u prozoru terminala.
Opcije komandne linije koje smo koristili su:
-x: Izvuci, preuzmi datoteke iz tar arhive.
-v: Detaljno, prikaži datoteke tokom izdvajanja.
-z: Gzip, koristi gzip za dekompresiju tar arhive.
-f: Datoteka, naziv tar arhive sa kojom želimo da radimo. Ovu opciju mora pratiti ime tar datoteke.
Ako listate datoteke u direktorijumu pomoću naredbe ls, primetićete da je kreiran direktorijum pod nazivom „Ukulele songs“. Izvučene datoteke se nalaze u tom direktorijumu. Odakle je došao taj direktorijum? Bio je sadržan u tar arhivi i raspakovan je zajedno sa datotekama.
Sada ćemo izvući pesme za gitaru. Koristićemo skoro istu naredbu kao i ranije, ali sa jednom ključnom razlikom. Sufiks ekstenzije .bz2 nam govori da je arhiva komprimovana pomoću naredbe bzip2. Umesto da koristimo opciju -z (gzip), koristićemo opciju -j (bzip2).
tar -xvjf guitar_songs.tar.bz2
Ponovo, datoteke se navode u terminalu dok se izvlače. Da budemo precizni, opcije komandne linije koje smo koristili sa tar za .tar.bz2 datoteku su:
-x: Izvuci, preuzmi datoteke iz tar arhive.
-v: Detaljno, prikaži datoteke tokom izdvajanja.
-j: Bzip2, koristi bzip2 za dekompresiju tar arhive.
-f: Datoteka, naziv tar arhive sa kojom želimo da radimo.
Ako listamo datoteke u direktorijumu za preuzimanje, videćemo da je kreiran još jedan direktorijum pod nazivom „Guitar Songs“.
Odabir lokacije za izdvajanje datoteka
Ukoliko želimo da izdvojimo datoteke na lokaciju koja nije trenutni direktorijum, možemo da navedemo ciljni direktorijum koristeći opciju -C (navedeni direktorijum).
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Ako pogledamo direktorijum Dokumenti/Pesme, videćemo da je kreiran direktorijum „Guitar Songs“.
Važno je napomenuti da ciljni direktorijum mora već postojati, tar ga neće kreirati ako ne postoji. Ukoliko je potrebno kreirati direktorijum i da tar izvuče sve datoteke u njega u jednoj komandi, to možete uraditi na sledeći način:
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
Opcija -p (roditelji) uzrokuje da mkdir kreira sve potrebne roditeljske direktorijume, osiguravajući da je ciljni direktorijum kreiran.
Uvid u sadržaj Tar datoteka pre ekstrakcije
Do sada smo samo slepo verovali i izvlačili neviđene datoteke. Možda biste želeli da zavirite unutra pre nego što to uradite. Možete pregledati sadržaj tar datoteke pre nego što je izdvojite korišćenjem opcije -t (list). Obično je zgodno usmeriti izlaz kroz naredbu less.
tar -tf ukulele_songs.tar.gz | less
Primećujete da ne moramo da koristimo opciju -z za listanje datoteka. Potrebno je dodati opciju -z samo kada izvlačimo datoteke iz .tar.gz arhive. Slično tome, nije nam potrebna opcija -j da bismo naveli datoteke u tar.bz2 datoteci.
Skrolovanjem kroz izlaz možemo videti da se sve u tar arhivi nalazi u direktorijumu koji se zove „Ukulele songs“, a unutar tog direktorijuma postoje datoteke i drugi direktorijumi.
Vidimo da direktorijum „Ukulele songs“ sadrži direktorijume pod nazivom „Random Songs“, „Ramones“ i „Possibles“.
Da biste izvukli sve datoteke iz direktorijuma unutar tar arhive, koristite sledeću naredbu. Obratite pažnju da je putanja uokvirena navodnicima jer sadrži razmake.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Da biste izvukli jednu datoteku, navedite putanju i naziv datoteke.
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
Možete izdvojiti izbor datoteka korišćenjem džoker znakova, gde * predstavlja bilo koji niz znakova, a ? predstavlja bilo koji pojedinačni znak. Korišćenje džoker znakova zahteva upotrebu opcije –wildcards.
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
Ekstrakcija datoteka bez kreiranja direktorijuma
Ukoliko ne želite da se struktura direktorijuma u tar datoteci ponovo kreira na vašem čvrstom disku, koristite opciju –strip-components. Opcija –strip-components zahteva numerički parametar. Broj predstavlja koliko nivoa direktorijuma treba zanemariti. Datoteke iz zanemarenih direktorijuma se i dalje izdvajaju, ali se struktura direktorijuma ne replicira na vaš čvrsti disk.
Ako navedemo –strip-components=1 sa našim primerom tar datoteke, najviši direktorijum „Ukulele songs“ unutar tar datoteke neće biti kreiran na čvrstom disku. Datoteke i direktorijumi koji bi bili raspakovani u taj direktorijum se izdvajaju u ciljni direktorijum.
tar -xvzf ukulele_songs.tar.gz --strip-components=1
Postoje samo dva nivoa ugnežđivanja direktorijuma u našem primeru tar datoteke. Dakle, ako koristimo –strip-components=2, sve datoteke se izdvajaju u ciljni direktorijum i ne kreiraju se drugi direktorijumi.
tar -xvzf ukulele_songs.tar.gz --strip-components=2
Ako pogledate Linux man stranicu, videćete da je tar dobar kandidat za titulu „naredba sa najviše opcija komandne linije“. Na sreću, kako bismo ekstrahovali datoteke iz .tar.gz i .tar.bz2 datoteka sa zadovoljavajućim nivoom kontrole, potrebno je da zapamtimo samo nekoliko ovih opcija.