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

Contenuti

Bash shell nel concetto desktop di Unity

I file tar sono file compressi. Li troverai molte volte durante l'utilizzo di una distribuzione Linux come Ubuntu o anche durante l'utilizzo del terminale su macOS. Prossimo, spiega come estrarre (o decomprimi) il contenuto di un file tar, noto anche come tarball.

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

File con a .tar.gz o un .tar.bz2 estensione sono file compressi. Un file con uno solo .tar l'estensione non è compressa, ma saranno molto rari.

il .tar parte dell'estensione del file significa Tmono ArkansasErba cipollina, ed è il motivo per cui entrambi i tipi di file sono chiamati file tar. Gli archivi del catrame risalgono a 1979 quando il tar Il comando è stato creato per consentire agli amministratori di sistema di archiviare i file su nastro. Quarant'anni dopo, stiamo ancora usando il tar comando per estrarre i file tar sui nostri dischi rigidi. Qualcuno da qualche parte probabilmente sta ancora usando tar con il nastro.

il .gz oh .bz2 Il suffisso dell'estensione indica che il file è stato compresso, usando il gzip oh bzip2 algoritmo di compressione. il tar Il comando funzionerà perfettamente 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. Hai solo bisogno di usare l'appropriato tar opzioni della riga di comando.

Estrai file da archivi Tar

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

Due file tar nella directory di download

Estraiamo le canzoni dall'ukulele:

tar -xvzf ukulele_songs.tar.gz

Man mano che i file vengono estratti, sono elencati nella finestra del terminale.

Estrazione di tutti i file dall'archivio tar

Le alternative della riga di comando che usiamo sono:

  • -X: Estratto, recuperare i file dall'archivio tar.
  • -v: Dettagliato, elenca i file man mano che vengono estratti.
  • -Insieme a: Gzip, usa gzip per decomprimere il file tar.
  • -F: File, il nome del file tar che vogliamo tar lavorare con. Questa opzione deve essere seguita dal nome del file tar.

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

Directory dei brani dell'ukulele creata nella directory di download

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

tar -xvjf guitar_songs.tar.bz2

Estrarre il file tar dei brani per chitarra nella cartella Download

Un'altra volta, i file sono elencati nel terminale man mano che vengono estratti. per essere chiari, le alternative della riga di comando che usiamo con tar Per lui .tar.bz2 file erano:

  • -X: Estratto, recuperare i file dall'archivio tar.
  • -v: Dettagliato, elenca i file man mano che vengono estratti.
  • -J: Bzip2, usa bzip2 per decomprimere il file tar.
  • -F: File, nome del file tar con cui vogliamo che funzioni.

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

Directory di brani per chitarra creati nella directory Download

Seleziona dove estrarre i file

Se vogliamo estrarre i file in una posizione diversa dalla directory corrente, possiamo specificare una directory di destinazione usando il -C (directory specificata) opzione.

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

Cercando nella nostra directory dei documenti / canzoni, vedremo che la directory Guitar Songs è stata creata.

Directory di brani per chitarra creati nella directory Documenti / canzoni

Nota che la directory di destinazione deve già esistere, tar non lo creerà se non è presente. Se hai bisogno di creare una directory e avere tar estrai i file con un solo comando, puoi farlo nel modo seguente:

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

il -p (genitori) cause di opzione mkdir per creare le directory home necessarie, assicurandosi che la directory di destinazione sia stata creata.

Guarda dentro i file tar prima di estrarli

Fino ad ora, abbiamo fatto un atto di fede e abbiamo estratto i file senza essere visti. Potresti voler guardare prima di saltare. Puoi rivedere il contenuto di a tar file prima di estrarlo utilizzando il -t opzione (pronto). Generalmente, è conveniente incanalare l'uscita attraverso il less comando.

tar -tf ukulele_songs.tar.gz | meno

Si noti che non è necessario utilizzare il -z opzione per elencare i file. Dobbiamo solo aggiungere il -z opzione quando siamo estrazione file di a .tar.gz procedimento. Nello stesso modo, non abbiamo bisogno di -j opzione per elencare i file in a tar.bz2 procedimento.

Contenuto del file tar convogliato attraverso less

Mentre ci muoviamo attraverso l'uscita, possiamo vedere che tutto nel file tar è all'interno di una directory chiamata Ukulele Songs, e all'interno di quella directory, ci sono file e altre directory.

Seconda visualizzazione del contenuto del file tar convogliato tramite less

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

Per estrarre tutti i file da una directory in un file tar, usa il seguente comando. Nota che il percorso è tra virgolette perché ci sono spazi nel percorso.

tar -xvzf ukulele_songs.tar.gz "Canzoni per Ukulele/Ramones/"

Estrazione di una singola cartella dal file tar

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

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

Estrarre un singolo file dall'archivio tar

Puoi estrarre una selezione di file usando i caratteri jolly, dove * rappresenta qualsiasi stringa di caratteri e ? rappresenta ogni singolo carattere. L'uso dei caratteri jolly richiede l'uso di --wildcards opzione.

tar -xvz --wildcards -f ukulele_songs.tar.gz "Canzoni per ukulele/Possibili/B*"

Estrazione di brani da tar con caratteri jolly

Estrai i file senza estrarre le directory

Se non vuoi che la struttura della directory nel file tar venga ricreata sul tuo disco rigido, usa el --strip-components opzione. il --strip-components L'opzione necessita di un parametro numerico. Il numero rappresenta quanti livelli di directory ignorare. I file nelle directory ignorate vengono ancora estratti, ma la struttura della directory non viene replicata sul disco rigido.

Se specifichiamo --strip-components=1 con il nostro file tar di esempio, La directory principale dei brani dell'ukulele 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

Estrazione di file dall'archivio tar con --strip-components = 1

Ci sono solo due livelli di nidificazione delle directory all'interno del nostro file tar di esempio. Quindi, se usiamo --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

Estrazione di file dall'archivio tar con --strip-components = 2

Se guardi Linux pagina man vedrai che tar devi essere un buon candidato per il titolo di “con il maggior numero di alternative alla riga di comando”. fortunatamente, per permetterci di estrarre i file da .tar.gz e tar.bz2 file con un buon grado di controllo granulare, dobbiamo solo ricordare alcune di queste opzioni.

impostaTimeout(funzione(){
!funzione(F,B,e,v,n,T,S)
{Se(f.fbq)Restituzione;n=f.fbq=funzione(){n.callMethod?
n.callMethod.apply(n,argomenti):n.queue.push(argomenti)};
Se(!f._fbq)f._fbq = n;n.push=n;n.loaded=!0;n.version='2.0′;
n.coda=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(T,S) } (window, documento,'copione',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('dentro', '335401813750447');
fbq('traccia', 'Visualizzazione della pagina');
},3000);

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.