Como extrair arquivos para outro diretório usando o comando 'tar'?

562

Eu achei que tar archive.tar /users/mylocation funcionaria, mas não funciona. Como eu posso fazer isso?

    
por goovim 26.05.2011 / 18:01

5 respostas

800

Para extrair um arquivo para um diretório diferente do atual, use a opção -C ou --directory , tar, como em

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

Observe que o diretório de destino precisa existir antes de executar esse comando (ele pode ser criado por mkdir /target/directory ).

Leia a página de manual (comando: man tar ) para outras opções.

    
por Wesley Rice 26.05.2011 / 18:16
203

Observe que, se o seu tarball já contiver um nome de diretório que você deseja alterar, adicione a opção --strip-components=1 :

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

Combinando as respostas e comentários anteriores:

Para simplesmente extrair o conteúdo e criar o diretório de destino, se estiver faltando:

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

Para extrair e também remover o diretório raiz (primeiro nível) no zip

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

Outra opção é usar - um nível superior. Isso criará automaticamente um diretório com base no nome do arquivo original.

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

Além disso, se você quiser, você pode especificar o seu próprio e o tar irá criá-lo automaticamente.

tar zxvf filename.tgz --one-top-level=new_directory
    
por Dean Householder 22.03.2018 / 22:49
0

O que achei interessante em relação à extração é que depende de como você criou o arquivo, veja este exemplo

cd /tmp
mkdir folder
touch folder/file.txt

quando você faz tar -zcvf folder.tar.gz folder tudo é como esperado = quando você o descompactar agora ele será descompactado (a pasta será criada, se você a removeu) como /tmp/folder/ .

Mas, quando você criar o tar como tar -zcvf tmp-folder.tar.gz /tmp/folder e você descompactá-lo na pasta / tmp, o resultado será o diretório /tmp/tmp/folder ! Nesse caso, você tem que descompactá-lo para / - tar -xf tmp-folder.tar.gz -C /

    
por Betlista 02.09.2017 / 00:25

Tags