Descompactar uma pasta específica dentro do tar.gz

6

Como faço para descompactar / descompactar uma pasta específica dentro de um tar.gz usando o terminal / linha de comando ( Ubuntu 14.04 (Trusty Tahr))?

Preciso:

-file.tar.gz
 -- folder1
 -- folder2

Como extrair ...

... folder1 -->  ~/locationX
... folder2 --> ~/locationY

Como posso fazer isso?

Por favor note: Isso está puramente relacionado ao terminal / linha de comando e não ao Puppet . Este é apenas um exemplo - eu salvaria mais ou menos 50 etapas adicionais no Puppet, se houver um comando para descompactar uma pasta específica de dentro de um tar.gz , pois eu poderia evitar mover arquivos por aí ...

    
por frank 19.12.2014 / 22:18

1 resposta

14

Acho que isso deve ser feito:

tar -xzf file.tar.gz -C ~/locationX folder1 -C ~/locationY folder2

A opção -C significa mudar para o diretório especificado antes de fazer a extração. Especificar argumentos de nome de arquivo após o nome do arquivo tar restringe a extração para apenas esses arquivos ou diretórios. E você pode repetir este -C pendurado diretórios como você faz.

Observe que isso fará as extrações em subdiretórios: Folder1 entrará em pathX/Folder1 , Folder2 entrará em folderY/Folder2 . Você pode evitar isso usando a opção --strip-components :

tar -xzf file.tar.gz -C ~/locationX --strip-components=1 folder1 \
                     -C ~/locationY --strip-components=1 folder2

Além disso, se os prefixos reais no arquivo tar forem ./folder1 e ./folder2 , como é provável se você criou o arquivo tar com tar -czf file.tar.gz . , será necessário incluir o prefixo ./ no nome do arquivo. argumentos e mude para --strip-components=2 .

    
por 19.12.2014 / 22:32