Arhivele tar, cunoscute și ca „tarball”, sunt fișiere comprimate pe care le vei întâlni frecvent, mai ales dacă utilizezi distribuții Linux precum Ubuntu sau dacă lucrezi cu terminalul pe macOS. În continuare, îți voi explica cum poți extrage conținutul acestor fișiere.
Ce sunt fișierele .tar.gz și .tar.bz2?
Fișierele cu extensiile .tar.gz sau .tar.bz2 sunt, de fapt, arhive comprimate. Un fișier cu extensia .tar este necomprimat și, deși există, este destul de rar. Partea „.tar” a extensiei indică faptul că este o arhivă creată cu utilitarul tar, un instrument care datează din 1979 și care a fost conceput inițial pentru arhivarea fișierelor pe bandă. Chiar și astăzi, după atâția ani, utilizăm comanda tar pentru a gestiona aceste arhive pe hard disk-urile noastre.
Sufixele .gz sau .bz2, pe de altă parte, indică modul în care a fost comprimată arhiva, fie cu algoritmul gzip, fie cu bzip2. Din fericire, comanda tar poate gestiona ambele tipuri de compresie, așadar nu este nevoie să-ți faci griji despre metoda utilizată la crearea arhivei. Tot ce ai nevoie este să utilizezi opțiunile corespunzătoare în linia de comandă a utilitarului tar, care este disponibilă în orice shell Bash.
Cum extragi fișiere din arhive Tar?
Să presupunem că ai descărcat două arhive: una numită `ukulele_songs.tar.gz` și cealaltă `guitar_songs.tar.bz2`, ambele salvate în directorul Descărcări.
Pentru a extrage conținutul arhivei `ukulele_songs.tar.gz`, folosește următoarea comandă:
tar -xvzf ukulele_songs.tar.gz
Pe măsură ce fișierele sunt extrase, numele lor vor fi afișate în fereastra terminalului.
Iată ce reprezintă opțiunile din linia de comandă:
- `-x`: Extrage fișierele din arhiva tar.
- `-v`: Permite afișarea numelor fișierelor pe măsură ce sunt extrase.
- `-z`: Indică faptul că arhiva a fost comprimată cu gzip și trebuie decomprimată.
- `-f`: Precizează numele fișierului arhivă cu care va lucra utilitarul tar. Această opțiune trebuie urmată de numele arhivei.
După ce ai extras fișierele, vei observa că în directorul curent a fost creat un nou director numit „Ukulele Songs”. Acesta conține fișierele extrase din arhivă. Structura directorului a fost păstrată așa cum era în interiorul arhivei.
Pentru a extrage melodiile de chitară din arhiva `guitar_songs.tar.bz2`, folosim o comandă similară, dar cu o mică diferență: sufixul .bz2 indică faptul că arhiva a fost comprimată folosind bzip2. În loc de opțiunea `-z` (gzip), vom folosi opțiunea `-j` (bzip2):
tar -xvjf guitar_songs.tar.bz2
Opțiunile utilizate pentru extragerea arhivei `.tar.bz2` sunt:
- `-x`: Extrage fișierele din arhivă.
- `-v`: Afișează numele fișierelor în timpul extragerii.
- `-j`: Indică faptul că arhiva a fost comprimată cu bzip2 și trebuie decomprimată.
- `-f`: Numele fișierului arhivă.
După extragere, în directorul Descărcări vei găsi un nou director numit „Guitar Songs”.
Cum specifici locația de extragere?
Dacă dorești să extragi fișierele într-un alt director decât cel curent, poți folosi opțiunea `-C` (director specificat), indicând calea directorului țintă:
tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/
Verificând directorul `Documents/Songs`, vei observa că a fost creat directorul „Guitar Songs”.
Reține că directorul țintă trebuie să existe deja, utilitarul tar nu-l va crea în mod automat. Dacă ai nevoie să creezi un director și să extragi fișierele în el într-o singură comandă, poți face asta astfel:
mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/
Opțiunea `-p` (părinți) din comanda `mkdir` se asigură că toate directoarele părinte necesare sunt create, dacă nu există deja.
Cum vizualizezi conținutul unei arhive înainte de extragere?
Dacă vrei să afli ce conține o arhivă tar înainte de a o extrage, poți utiliza opțiunea `-t` (listă). Pentru a facilita vizualizarea, este util să trimiți rezultatul către comanda `less`:
tar -tf ukulele_songs.tar.gz | less
În acest caz, nu este necesar să folosești opțiunea `-z` pentru a vizualiza conținutul. Opțiunea `-z` este necesară doar în timpul extragerii fișierelor dintr-un fișier .tar.gz. Similar, nu ai nevoie de opțiunea `-j` pentru a lista fișierele dintr-un `.tar.bz2`.
Analizând rezultatul, vei vedea că fișierele din arhiva tar sunt păstrate într-un director numit „Ukulele Songs”. Acest director conține la rândul său fișiere și alte subdirectoare.
Putem observa că directorul „Ukulele Songs” include subdirectoarele „Random Songs”, „Ramones” și „Possibles”.
Pentru a extrage toate fișierele dintr-un director specific din arhivă, folosește următoarea comandă. Calea directorului trebuie inclusă între ghilimele dacă conține spații:
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"
Pentru a extrage un singur fișier, include calea completă și numele fișierului:
tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"
Poți extrage o selecție de fișiere folosind metacaractere: `*` reprezintă orice șir de caractere, iar `?` reprezintă un singur caracter. Pentru a utiliza metacaractere, trebuie să adaugi opțiunea `–wildcards`:
tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"
Cum extragi fișiere fără a crea directoare?
Dacă nu vrei ca structura de directoare din arhiva tar să fie recreată pe hard disk, folosește opțiunea `–strip-components`, care necesită un parametru numeric. Numărul reprezintă câte niveluri de directoare vor fi ignorate în timpul extragerii. Fișierele din directoarele ignorate sunt extrase, dar structura directoarelor nu este copiată.
Dacă folosim `–strip-components=1`, directorul „Ukulele Songs” nu va fi creat pe hard disk, iar fișierele și directoarele care ar fi fost în el vor fi extrase direct în directorul țintă:
tar -xvzf ukulele_songs.tar.gz --strip-components=1
Arhiva noastră de exemplu are două niveluri de imbricare a directoarelor. Dacă folosim `–strip-components=2`, toate fișierele vor fi extrase în directorul țintă fără a mai crea niciun alt subdirector:
tar -xvzf ukulele_songs.tar.gz --strip-components=2
Dacă verifici pagina de manual Linux pentru utilitarul tar, vei observa că are un număr impresionant de opțiuni de linie de comandă. Din fericire, pentru a extrage fișierele din arhivele `.tar.gz` și `.tar.bz2` cu un nivel bun de control, nu este necesar să memorezi decât câteva dintre aceste opțiuni.