Descompacte o arquivo compactado em .txz e .tar com um comando

9

Eu tenho um arquivo compactado em * .txz. Depois de descompactar, recebi um arquivo * .tar. Existe alguma maneira de descompactá-lo duas vezes com um comando? Quero dizer descompactar o arquivo (* .tar) .txz com um comando?

Para saber, eu faço assim:

xz -d file.txz
tar xvf file.tar

Mas eu me pergunto se existe uma maneira mais agradável.

    
por Paweł Jaworowski 13.02.2015 / 11:43

3 respostas

13
xz -d < file.tar.xz | tar xvf -

É o mesmo que com qualquer arquivo compactado. Você deve nunca ter que criar uma cópia não compactada do arquivo original.

Algumas implementações tar , como as versões recentes do GNU tar , possuem opções embutidas para chamar xz por conta própria.

Com o GNU tar ou bsdtar :

tar Jxvf file.tar.xz

No entanto, se você tiver uma versão com -J , provavelmente detectará xz arquivos automaticamente, portanto:

tar xvf file.tar.xz

será suficiente.

Se o seu GNU ou BSD tar for muito antigo para suportar xz especificamente, você poderá usar a opção --use-compress-program :

tar --use-compress-program=xz -xvf file.tar.gz

Uma das vantagens de ter tar invocar o utilitário do compressor é que ele é capaz de relatar a falha dele no status de saída.

Observação: se o tar.xz archive tiver sido criado com pixz , pixz pode ter adicionado um tar index a ele, o que permite extrair arquivos individualmente sem precisar descompactar todo o arquivo:

pixz -x path/to/file/in/archive < file.tar.xz | tar xvf -
    
por 13.02.2015 / 12:17
4

Este deve ser o caminho a percorrer tar Jxvf file.txz

    
por 13.02.2015 / 11:45
4

A descompactação provavelmente não é a terminologia correta. Você pode descompactar com xz e untar com tar .

A página de manual para o GNU tar ( man tar , o GNU tar é o padrão no Debian) especifica que você pode usar:

-I, --use-compress-program PROG
      filter through PROG (must accept -d)

e xz suportam a opção -d , para que você possa usar:

tar --use-compress-program xz xvf file.txz 

O que é muito menos claro na página man é que -xz e -J são abreviações para --use-compress-program xz ou -I xz .

E o que não está especificado na página man é que você pode apenas fazer

tar xvf file.txz 

no GNU tar e que ele reconhecerá o arquivo tar como sendo compactado com xz .

    
por 13.02.2015 / 12:04