Come estrarre i file in un'altra directory usando il comando 'tar'?

575

Ho pensato che tar archive.tar /users/mylocation avrebbe funzionato, ma non è così. Come lo posso fare?

    
posta goovim 26.05.2011 - 18:01

6 risposte

829

Per estrarre un archivio in una directory diversa dalla corrente, usa -C o --directory , opzione tar, come in

tar -xf archive.tar -C /target/directory

Si noti che la directory di destinazione deve esistere prima di eseguire quel comando (può essere creato da mkdir /target/directory ).

Leggi la pagina di manuale (comando: man tar ) per altre opzioni.

    
risposta data Wesley Rice 26.05.2011 - 18:16
213

Nota che se il tuo tarball contiene già un nome di directory che vuoi modificare, aggiungi l'opzione --strip-components=1 :

tar xf archive.tar -C /target/directory --strip-components=1
    
risposta data Bryan Larsen 21.05.2014 - 20:32
20

Unendo le risposte e i commenti precedenti:

Per estrarre semplicemente il contenuto e creare la directory di destinazione, se manca:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

Per estrarre e rimuovere anche la directory root (primo livello) nello zip

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
    
risposta data Thamme Gowda 27.06.2016 - 21:29
5

Un'altra opzione è usare --one-top-level. Questo creerà automaticamente una directory basata sul nome file dell'originale.

tar zxvf filename.tgz --one-top-level

Inoltre, se lo desideri, puoi specificarne uno e tar lo creerà automaticamente.

tar zxvf filename.tgz --one-top-level=new_directory
    
risposta data Dean Householder 22.03.2018 - 22:49
1

Con tar 1.29, possiamo semplicemente aggiungere il nome della directory dopo il nome file tar. Ad esempio,

tar zxvf tar-file directory-name/
    
risposta data Shunmuga priyan Selvaraju 30.06.2018 - 01:00
0

Ciò che ho trovato interessante in relazione all'estrazione è che dipende da come hai creato l'archivio, vedi questo esempio

cd /tmp
mkdir folder
touch folder/file.txt

quando fai tar -zcvf folder.tar.gz folder tutto è come previsto = quando lo decomponi ora verrà rimosso (la cartella verrà creata, se la rimuovi) come /tmp/folder/ .

Ma quando creerai tar come tar -zcvf tmp-folder.tar.gz /tmp/folder e lo decoderai nella cartella / tmp, il risultato sarà /tmp/tmp/folder directory! In tal caso devi decomprimerlo in / - tar -xf tmp-folder.tar.gz -C /

    
risposta data Betlista 02.09.2017 - 00:25

Leggi altre domande sui tag