Come estrarre file da un file .tar.gz o .tar.bz2 su Linux

  • Dave McKay

    @TheGurkha

  • 5 aprile 2019, 8:00 EDT
Fatmawati Achmad Zaenuri / .com

I file Tar sono archivi compressi. Li incontrerai spesso durante l’utilizzo di una distribuzione Linux come Ubuntu o anche durante l’utilizzo del terminale su macOS. Ecco come estrarre o decomprimere il contenuto di un file tar, noto anche come tarball.

Cosa significano .tar.gz e .tar.bz2?

File che hanno un’estensione .tar.gz o .tar.bz2 sono file di archivio compressi. Un file con solo un’estensione .tar non è compresso, ma saranno molto rari.

La parte .tar di l’estensione file sta per archivio su nastro ed è la ragione per cui entrambi questi tipi di file sono chiamati file tar. I file Tar risalgono al 1979, quando è stato creato il comando tar per consentire agli amministratori di sistema di archiviare i file su nastro. Quarant’anni dopo stiamo ancora utilizzando il comando tar per estrarre i file tar sui nostri dischi rigidi. Qualcuno da qualche parte probabilmente sta ancora usando tar con il nastro.

Pubblicità

Il .gz o Il .bz2 suffisso dell’estensione indica che l’archivio è stato compresso, utilizzando gzip o bzip2 algoritmo di compressione. Il comando tar funzionerà felicemente con entrambi i tipi di file, quindi non importa quale metodo di compressione è stato utilizzato e dovrebbe essere disponibile ovunque tu abbia una shell Bash. Devi solo utilizzare le tar opzioni della riga di comando appropriate.

Estrazione di file da file Tar

Supponiamo che tu abbia scaricato due file di spartiti. Un file si chiama ukulele_songs.tar.gz, l’altro si chiama guitar_songs.tar.bz2. Questi file si trovano nella directory Download.

Estraiamo le canzoni dell’ukulele:

tar -xvzf ukulele_songs.tar.gz 

Man mano che i file vengono estratti, vengono elencati in la finestra del terminale.

Le opzioni della riga di comando che abbiamo usato sono:

  • -x: Estrai, recupera i file dal file tar.
  • – v: Verbose, elenca i file mentre vengono estratti.
  • -z: Gzip, usa gzip per decomprimere il file tar.
  • -f: File, il nome del tar file con cui tar deve lavorare. Questa opzione deve essere seguita dal nome del file tar.

Elenca i file nella directory con ls e vedrai che un è stata creata una directory chiamata Ukulele Songs. I file estratti si trovano in quella directory. Da dove viene questa directory? Era contenuto nel file tar ed è stato estratto insieme ai file.

Pubblicità

Ora estraiamo le canzoni di chitarra. Per fare questo useremo quasi esattamente lo stesso comando di prima ma con una differenza importante. Il suffisso dell’estensione .bz2 ci dice che è stato compresso utilizzando il comando bzip2. Invece di utilizzare l’opzione -z (gzip), utilizzeremo l’opzione -j (bzip2).

tar -xvjf guitar_songs.tar.bz2

Ancora una volta, i file vengono elencati nel terminale non appena vengono estratti. Per essere chiari, le opzioni della riga di comando che abbiamo utilizzato con tar per il file .tar.bz2 erano:

Se elenchiamo i file nella directory Download vedremo che è stata creata un’altra directory chiamata Guitar Songs.

Scegliere dove estrarre i file

Se vogliamo estrarre i file in una posizione oltre alla directory corrente, possiamo specificare una directory di destinazione utilizzando l’opzione -C (directory specificata).

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

Guardando nella nostra directory Documents / Songs vedremo che la directory Guitar Songs è stata creata.

Nota che la directory di destinazione deve già esistere, tar non lo creerà se non è presente. Se devi creare una directory e tar estrarre tutti i file in un unico comando, puoi farlo come segue:

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

L’opzione -p (genitori) fa in modo che mkdir crei tutte le directory principali richieste, assicurando la directory di destinazione è stato creato.

Guardare dentro i file Tar prima di estrarli

Finora abbiamo fatto solo un atto di fede ed abbiamo estratto i file a prima vista. Ti potrebbe piacere guardare prima di saltare. Puoi esaminare il contenuto di un file tar prima di estrarlo utilizzando l’opzione -t (list).Di solito è conveniente reindirizzare l’output tramite il comando less.

tar -tf ukulele_songs.tar.gz | less
Pubblicità

Nota che non è necessario utilizzare l’opzione -z per elencare i file. Dobbiamo solo aggiungere l’opzione -z quando estraiamo file da un file .tar.gz. Allo stesso modo, non abbiamo bisogno dell’opzione -j per elencare i file in un file tar.bz2.

Scorrendo l’output possiamo vedere che tutto nel file tar è contenuto in una directory chiamata Ukulele Songs, e all’interno di quella directory ci sono file e altre directory.

Possiamo vedere che la directory Ukulele Songs contiene directory chiamate Canzoni casuali, Ramones e Possibili.

Per estrarre tutti i file da una directory all’interno di un file tar usa il seguente comando. Tieni presente che il percorso è racchiuso tra virgolette perché sono presenti spazi nel percorso.

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

Per estrarre un singolo file, fornire il percorso e il nome del file.

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

È possibile estrarre una selezione di file utilizzando caratteri jolly, dove * rappresenta qualsiasi stringa di caratteri e ? rappresenta un singolo carattere. L’utilizzo dei caratteri jolly richiede l’utilizzo dell’opzione --wildcards.

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

Estrazione di file senza estrazione di directory

Se non vuoi che la struttura della directory nel file tar venga ricreata sul tuo disco rigido, usa l’opzione --strip-components. L’opzione --strip-components richiede un parametro numerico. Il numero rappresenta il numero di livelli di directory da ignorare. I file dalle directory ignorate vengono comunque estratti, ma la struttura della directory non viene replicata sul disco rigido.

Se specifichiamo --strip-components=1 con il nostro file tar di esempio, il La directory più in alto di Ukulele Songs all’interno del file tar non viene creata sul disco rigido. I file e le directory che sarebbero stati estratti in quella directory vengono estratti nella directory di destinazione.

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

Ce ne sono solo due livelli di annidamento delle directory all’interno del nostro file tar di esempio. Quindi, se utilizziamo --strip-components=2, tutti i file vengono estratti nella directory di destinazione e non vengono create altre directory.

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

Se guardi la pagina man di Linux vedrai che tar deve essere un buon candidato per il titolo di “comando con il maggior numero di opzioni della riga di comando”. Per fortuna, per consentirci di estrarre file da .tar.gz e tar.bz2 file con un buon grado di controllo granulare, dobbiamo solo ricordarne una manciata di queste opzioni.

Dave McKay
Dave McKay ha usato per la prima volta i computer quando era in voga il nastro di carta perforato, e da allora continua a programmare . Dopo oltre 30 anni nel settore IT, è ora un giornalista tecnologico a tempo pieno. Durante la sua carriera, ha lavorato come programmatore freelance, manager di un team internazionale di sviluppo software, project manager di servizi IT e, più recentemente, , in qualità di responsabile della protezione dei dati. Dave è un evangelista di Linux e sostenitore dell’open source. Leggi la biografia completa “

Leave a Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *