Cum să extrageți fișiere dintr-un fișier .tar.gz sau .tar.bz2 pe Linux

Fișierele tar sunt arhive comprimate. Le veți întâlni frecvent când utilizați o distribuție Linux precum Ubuntu sau chiar când utilizați terminalul pe macOS. Iată cum să extrageți — sau să dezinstalați — conținutul unui fișier tar, cunoscut și sub numele de tarball.

Ce înseamnă .tar.gz și .tar.bz2?

Fișierele care au o extensie .tar.gz sau .tar.bz2 sunt fișiere de arhivă comprimate. Un fișier cu doar o extensie .tar este necomprimat, dar acestea vor fi foarte rare.

Porțiunea .tar a extensiei de fișier reprezintă arhiva pe bandă și este motivul pentru care ambele tipuri de fișiere sunt numite fișiere tar. Fișierele tar datează din 1979, când comanda tar a fost creată pentru a permite administratorilor de sistem să arhiveze fișierele pe bandă. Patruzeci de ani mai târziu, încă folosim comanda tar pentru a extrage fișierele tar pe hard disk-urile noastre. Cineva pe undeva probabil mai folosește gudron cu bandă.

Sufixul extensiei .gz sau .bz2 indică faptul că arhiva a fost comprimată, utilizând fie algoritmul de compresie gzip, fie bzip2. Comanda tar va funcționa fericit cu ambele tipuri de fișiere, așa că nu contează ce metodă de compresie a fost folosită – și ar trebui să fie disponibilă oriunde aveți un shell Bash. Trebuie doar să utilizați opțiunile corespunzătoare din linia de comandă tar.

Extragerea fișierelor din fișierele Tar

Să presupunem că ați descărcat două fișiere de partituri. Un fișier se numește ukulele_songs.tar.gz, celălalt se numește guitar_songs.tar.bz2. Aceste fișiere se află în directorul Descărcări.

  Cum se instalează Wine Staging pe Linux

Să extragem melodiile ukulele:

tar -xvzf ukulele_songs.tar.gz

Pe măsură ce fișierele sunt extrase, acestea sunt listate în fereastra terminalului.

Opțiunile din linia de comandă pe care le-am folosit sunt:

-x: Extrageți, preluați fișierele din fișierul tar.
-v: Verbos, enumerați fișierele pe măsură ce sunt extrase.
-z: Gzip, utilizați gzip pentru a decomprima fișierul tar.
-f: Fișier, numele fișierului tar cu care dorim să lucreze tar. Această opțiune trebuie să fie urmată de numele fișierului tar.

Listați fișierele din director cu ls și veți vedea că a fost creat un director numit Ukulele Songs. Fișierele extrase se află în acel director. De unde a venit acest director? A fost conținut în fișierul tar și a fost extras împreună cu fișierele.

Acum să extragem melodiile de chitară. Pentru a face acest lucru, vom folosi aproape exact aceeași comandă ca înainte, dar cu o diferență importantă. Sufixul extensiei .bz2 ne spune că a fost comprimat folosind comanda bzip2. În loc să folosim opțiunea-z (gzip), vom folosi opțiunea -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Încă o dată, fișierele sunt listate pe terminal pe măsură ce sunt extrase. Pentru a fi clar, opțiunile din linia de comandă pe care le-am folosit cu tar pentru fișierul .tar.bz2 au fost:

-x: Extrageți, preluați fișierele din fișierul tar.
-v: Verbos, enumerați fișierele pe măsură ce sunt extrase.
-j: Bzip2, utilizați bzip2 pentru a decomprima fișierul tar.
-f: Fișier, numele fișierului tar cu care dorim să lucreze tar.

Dacă listăm fișierele din directorul Download, vom vedea că a fost creat un alt director numit Guitar Songs.

Alegerea de unde să extrageți fișierele

Dacă dorim să extragem fișierele într-o altă locație decât directorul curent, putem specifica un director țintă folosind opțiunea -C (director specificat).

tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/

Căutând în directorul nostru Documents/Songs, vom vedea că directorul Guitar Songs a fost creat.

  Cum să joci jocuri Nintendo 64 pe Linux

Rețineți că directorul țintă trebuie să existe deja, tar nu îl va crea dacă nu este prezent. Dacă trebuie să creați un director și să solicitați ca tar să extragă fișierele în toate într-o singură comandă, puteți face asta după cum urmează:

mkdir -p ~/Documents/Songs/Downloaded && tar -xvjf guitar_songs.tar.gz -C ~/Documents/Songs/Downloaded/

Opțiunea -p (părinți) determină mkdir să creeze orice directoare părinte care sunt necesare, asigurându-se că directorul țintă este creat.

Privirea în interiorul fișierelor gudron înainte de a le extrage

Până acum am făcut un salt de credință și am extras fișierele nevăzute. S-ar putea să vrei să te uiți înainte de a sări. Puteți examina conținutul unui fișier tar înainte de a-l extrage folosind opțiunea -t (listă). De obicei, este convenabil să direcționați ieșirea prin comanda less.

tar -tf ukulele_songs.tar.gz | less

Observați că nu trebuie să folosim opțiunea -z pentru a lista fișierele. Trebuie doar să adăugăm opțiunea -z atunci când extragem fișiere dintr-un fișier .tar.gz. De asemenea, nu avem nevoie de opțiunea -j pentru a lista fișierele dintr-un fișier tar.bz2.

Derulând prin rezultat, putem vedea că totul din fișierul tar este păstrat într-un director numit Ukulele Songs, iar în acel director există fișiere și alte directoare.

Putem vedea că directorul Ukulele Songs conține directoare numite Random Songs, Ramones și Possibles.

Pentru a extrage toate fișierele dintr-un director dintr-un fișier tar, utilizați următoarea comandă. Rețineți că calea este înfășurată între ghilimele deoarece există spații în cale.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/Ramones/"

Pentru a extrage un singur fișier, furnizați calea și numele fișierului.

tar -xvzf ukulele_songs.tar.gz "Ukulele Songs/023 - My Babe.odt"

Puteți extrage o selecție de fișiere folosind metacaracterele, unde * reprezintă orice șir de caractere și ? reprezintă orice caracter individual. Utilizarea wildcards necesită utilizarea opțiunii –wildcards.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Ukulele Songs/Possibles/B*"

Extragerea fișierelor fără a extrage directoare

Dacă nu doriți ca structura de directoare din fișierul tar să fie recreată pe hard disk, utilizați opțiunea –strip-components. Opțiunea –strip-components necesită un parametru numeric. Numărul reprezintă câte niveluri de directoare trebuie ignorate. Fișierele din directoarele ignorate sunt încă extrase, dar structura directoarelor nu este replicată pe hard disk.

  Cum să scanați porturi deschise pe un computer Linux cu Zenmap

Dacă specificăm –strip-components=1 cu exemplul nostru de fișier tar, directorul Ukulele Songs cel mai de sus din fișierul tar nu este creat pe hard disk. Fișierele și directoarele care ar fi fost extrase în acel director sunt extrase în directorul țintă.

tar -xvzf ukulele_songs.tar.gz --strip-components=1

Există doar două niveluri de imbricare a directoarelor în fișierul nostru de exemplu tar. Deci, dacă folosim –strip-components=2, toate fișierele sunt extrase în directorul țintă și nu sunt create alte directoare.

tar -xvzf ukulele_songs.tar.gz --strip-components=2

Dacă te uiți la Linux pagina de manual veți vedea că tar trebuie să fie un bun candidat pentru titlul de „comandă care are cele mai multe opțiuni de linie de comandă”. Din fericire, pentru a ne permite să extragem fișiere din fișierele .tar.gz și tar.bz2 cu un grad bun de control granular, trebuie să ne amintim doar câteva dintre aceste opțiuni.