Posso extrair uma pasta específica usando tar para outra pasta?

14

Eu sou novo no mundo do Linux e parece ter encontrado uma pedra de tropeço. Eu sei que posso extrair um arquivo específico usando o comando, tar xvfz archivename.tar.gz sampledir/no entanto, como posso extrair sampledir/para, testdir/em vez do caminho em que o arquivo está, por exemplo, atualmente o arquivo está no caminho /tmp/archivename.tar.gze eu gostaria de extrair sampledirpara o testdirque está no caminho /tmp/testdir.

AmendoimMacaco
fonte

Respostas:

19

O que você está procurando é a -Copção:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

Uso, conforme seu exemplo:

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

Além disso, você pode estar interessado em saber que versões modernas de tarnão exigem que o zsinalizador descomprima arquivos compactados com gzip; eles perceberão que é uma coisa .gze fazem a coisa certa automaticamente.

Faz-tudo5
fonte
Obrigado. Engraçado, tentei isso antes de postar a pergunta e ela falhou. Talvez eu tenha perdido uma opção. Vou tentar de novo.
PeanutsMonkey
Brilho. Eu sempre esqueço disso para arquivos grandes.
Zmonteca
3

Você não precisa jogar jogos loucos com tudo. O Tar suporta totalmente apenas a extração de um subconjunto dos arquivos em um arquivo, como mostra o seguinte exemplo (trivial):

/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

O truque é que o pathspec deve corresponder exatamente ao conteúdo do arquivo tarfile. Então, quando você faz um tar tf, se o caminho começa ./, você precisa inseri-lo e, se ele não tiver, você deve deixar de fora. Além disso, se você quiser extrair um sub-sub-sub-sub-sub-sub-sub-sub-caminho, ele terminará N níveis no sistema de arquivos quando terminar.

mulher
fonte
Obrigado womble. Talvez não seja o exemplo certo a usar, mas estou comparando o tar com o Winzip, WinRAR, etc. aplique um processo semelhante, por exemplo, selecione o arquivo que você deseja desarquivar (o tar faz isso) e selecione o caminho que você deseja extrair (o tar não fará isso, a menos que eu esteja no diretório específico).
PeanutsMonkey
Você quer a -Copção tar, então.
Womble