deixa o tar automático detectar o tipo de compactação ao extrair do stdin

13

Eu uso o GNU tar. Ele pode detectar automaticamente o tipo de compactação ao compactar / descompactar arquivos. Mas eu preciso descompactar um arquivo do stdin e o tipo de compactação é desconhecido. Percebi que o tar pode me dar uma sugestão correta como:

tar: Archive is compressed. Use -z option

Mas eu quero que o tar use essa opção de compactação automaticamente sem me pedir para inserir esse argumento. Como eu posso fazer isso? Por que não o tar apenas descompactar, uma vez que já conhece o tipo de compressão?

Obrigado!

    
por james 17.12.2013 / 22:56

2 respostas

6

Finalmente, percebi que o motivo pelo qual não posso permitir que o tar detecte e descompacte o arquivo do stdin é que eu uso o GNU tar. O tar do BSD pode fazer isso automaticamente sem problemas. Então eu decido usar bsdtar ao invés de tar no meu script agora.

    
por 15.01.2014 / 00:48
9

Esta não é a resposta que você deseja ouvir, mas isso não é suportado pelo GNU tar de acordo com seu manual:

The only case when you have to specify a decompression option while reading the archive is when reading from a pipe or from a tape drive that does not support random access. However, in this case GNU tar will indicate which option you should use. For example:

$ cat archive.tar.gz | tar tf -
tar: Archive is compressed.  Use -z option
tar: Error is not recoverable: exiting now

If you see such diagnostics, just add the suggested option to the invocation of GNU tar:

$ cat archive.tar.gz | tar tzf -

- 8.1.1 Criando e lendo arquivos compactados

    
por 17.12.2013 / 23:51