No meu sistema Linux, seu comando de compactação produz arquivos chamados dir.tar.7z.001, dir.tar.7z.002, etc., mas nenhum arquivo .7z. Isso significa que seu comando para descompactar o arquivo tar não funcionará, pois você está especificando um arquivo que não existe. Em vez de:
7z x -so dir.tar.7z
tente:
7z x -so dir.tar.7z.001
Além disso, você está usando os argumentos tar incorretos para descompactar a partir de stdin. Em vez de:
tar xf
use apenas:
tar x
Em resumo:
7z x -so dir.tar.7z.001 | tar x