Posso estrarre una cartella specifica usando tar in un'altra cartella?


14

Sono nuovo nel mondo di Linux e sembra che mi sia imbattuto in un ostacolo. So che posso estrarre un archivio specifc utilizzando il comando tar xvfz archivename.tar.gz sampledir/tuttavia Come posso estrarre sampledir/a testdir/piuttosto che il percorso che l'archivio è in egcurrently l'archivio è nel percorso /tmp/archivename.tar.gze vorrei estrarre sampledira testdirche si trova nel percorso /tmp/testdir.

Risposte:


19

Quello che stai cercando è l' -Copzione:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Utilizzo, secondo il tuo esempio:

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

Inoltre, potresti essere interessato a sapere che le versioni moderne di tarnon richiedono al zflag di decomprimere i file compressi con gzip; noteranno che è una .gzcosa da fare automaticamente.


Grazie. Stranamente l'ho provato prima di pubblicare la domanda e non è riuscito. Forse ho perso un'opzione. Ci proverò di nuovo.
PeanutsMonkey,

Brillantezza. Me ne dimentico sempre per archivi di grandi dimensioni.
Zmonteca,

3

Non è necessario giocare a giochi folli con tutto ciò che non racconta. Tar supporta completamente solo l'estrazione di un sottoinsieme dei file in un archivio, come mostrato nel seguente esempio (banale):

/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a    
/tmp/tardest $ ls -R
.:
a/

./a:
aaa

Il trucco è che pathspec deve corrispondere esattamente al contenuto del tarfile. Quindi quando fai un tar tf, se il percorso inizia con ./, devi inserirlo, e se non lo ha, devi lasciarlo fuori. Inoltre, se vuoi estrarre un sotto-sotto-sotto-sotto-sotto-sotto-sotto-sotto-percorso, finirà con N livelli profondi nel filesystem quando hai finito.


Grazie womble. Forse non è l'esempio giusto da usare, ma sto confrontando tar con Winzip, WinRAR, ecc. E forse tar è il comando errato da usare, tuttavia visto che ho visto l'esempio di tar unziving file gzip e bzip, speravo di poterlo fare applica un processo simile, ad esempio seleziona il file che desideri annullare l'archiviazione (tar fa questo) e seleziona il percorso che desideri estrarre (tar non lo fa a meno che io non sia nella directory specifica).
PeanutsMonkey,

-CQuindi vuoi l' opzione tar.
womble
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.