Eu não acho que você pode fazer o que quiser aqui. O problema com sua abordagem é que tar
lida em arquivos e árvores de diretórios, o que você não está fornecendo com comandos como este:
$ echo test | tar -cf test.tar /dev/sdtin
Mesmo quando você tenta "agrupar" suas strings em arquivos temporários usando subshells como este:
$ tar -cf test.tar <(echo test)
Você pode ver que seu conteúdo ainda está sendo usado usando esses descritores de arquivos temporários:
$ tar tvf test.tar
lr-x------ vagrant/vagrant 0 2018-08-04 23:52 dev/fd/63 -> pipe:[102734]
Se você pretende apenas compactar strings, você precisa colocá-las em um contexto de arquivo. Então você precisa fazer algo assim:
$ echo "test" > somefile && tar -cf /tmp/test.tar somefile
Você pode ver o arquivo presente dentro do arquivo TAR:
$ tar tvf /tmp/test.tar
-rw-rw-r-- vagrant/vagrant 5 2018-08-05 00:00 somefile
Replicando dados usando tar
A maioria dos que já trabalham com o Unix há vários anos provavelmente já viu esse padrão:
$ (cd /; tar cf - .)|(cd /mnt/newroot; tar pxvf -)
Eu costumava usar isso o tempo todo para replicar dados de um local para outro. Você pode usar isso também no SSH. Outros métodos são discutidos neste documento sobre as perguntas e respostas intitulado: clone árvore de diretórios raiz usando o busybox .
Backup /
Existe também este método se você pretende fazer backup do disco rígido principal:
$ sudo tar -cvpzf backup.tar.gz --exclude=/backup.tar.gz --one-file-system /