Atualização: Minha resposta original não funciona, desculpe. tar
não aceita um fluxo de dados de STDIN como entrada, então o primeiro comando falha.
A única maneira que posso pensar em realizar o que você deseja é escrever seu próprio programa para adicionar os cabeçalhos tar
necessários e o conteúdo ao redor do seu fluxo de dados. Então você poderia escrever:
$ bzcat foo.bz2 | stream-to-tar | bzip - > foo.tar.bz2
... e (supondo que seu programa obtenha o formato tar
correto) você pode descompactá-lo com um tar xf foo.tar.bz2
padrão.
Provavelmente não é assim que você quer fazer, já que não fornece nenhuma das vantagens habituais de tarar o arquivo em primeiro lugar.
$ bzcat foo.bz2 | tar cjf foo.tar.bz2 -
Agora, o problema é que o tar não inclui nenhum sistema de arquivos, porque tudo que fornecemos é um fluxo de dados descompactado. Isso significa que você precisa descomprimir / descompactar assim:
$ tar --to-stdout -xjf foo.tar.bz2 > foo