Обновление: мой оригинальный ответ не работает вообще, извините. tar
не будет принимать поток данных из STDIN в качестве входных данных, поэтому первая команда не будет выполнена.
Единственный способ, который я могу придумать, чтобы выполнить то, что вы хотите, - это написать собственную программу для добавления необходимых tar
заголовков и тому подобного в ваш поток данных. Тогда вы могли бы написать:
$ bzcat foo.bz2 | stream-to-tar | bzip - > foo.tar.bz2
... и (при условии, что ваша программа имеет tar
правильный формат) вы можете распаковать его стандартным способом tar xf foo.tar.bz2
.
Это, вероятно, не то, что вы хотите сделать, так как он не предоставляет никаких обычных преимуществ tar'а файла в первую очередь.
$ bzcat foo.bz2 | tar cjf foo.tar.bz2 -
Теперь проблема в том, что tar не включает в себя ни одну файловую систему, потому что все, что мы дали, это распакованный поток данных. Это означает, что вам нужно распаковать / распаковать его так:
$ tar --to-stdout -xjf foo.tar.bz2 > foo