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

14

Eu sou novo no mundo do Linux e pareço ter encontrado um obstáculo. Eu sei que posso extrair um arquivo específico usando o comando tar xvfz archivename.tar.gz sampledir/ no entanto, como eu posso extrair sampledir/ para testdir/ em vez do caminho que o arquivo está em egcurrently o arquivo está no caminho /tmp/archivename.tar.gz e eu gostaria para extrair sampledir para testdir , que está no caminho /tmp/testdir .

    
por PeanutsMonkey 13.07.2011 / 00:34

2 respostas

19

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

$ 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 as versões modernas de tar não exigem o sinal z para descompactar os arquivos compactados com zip; eles notarão que é .gz e fazer a coisa certa automaticamente.

    
por 13.07.2011 / 01:46
3

Você não precisa jogar jogos malucos com untar tudo. O Tar suporta totalmente apenas a extração de um subconjunto dos arquivos em um arquivo, conforme mostrado no 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 tar. Então, quando você faz um tar tf , se o caminho começa com ./ , você tem que colocar isso, e se não tiver, você tem que deixar de fora. Além disso, se você quiser extrair um sub-sub-sub-sub-sub-sub-caminho, ele vai acabar com N níveis no sistema de arquivos quando terminar.

    
por 13.07.2011 / 01:10

Tags