Como posso fazer a entrada de leitura de tar de stdin?

3

Eu preciso usar tar em um pipeline dentro de um script de shell para arquivar e compactar alguns arquivos.

Depois de ler a página de manual para tar , consegui fazer tar output to stdout executando-o junto com o argumento -O , mas não consegui descobrir como fazer a entrada de stdin . Como muitos comandos leram stdin se nenhuma outra entrada for especificada, tentei:

pv ~/foo | tar c -O ~/foo.tar

mas isso não funcionou:

tar: Cowardly refusing to create an empty archive

Try 'tar --help' or 'tar --usage' for more information.

Como posso fazer tar ler entrada de stdin ?

    
por kos 18.02.2015 / 18:40

2 respostas

4

Usar -O com c é ignorado, pois nenhum arquivo é extraído . Você obterá o mesmo resultado de qualquer maneira:

$ tar c -O foo | tar t
foo
$ tar c foo | tar t  
foo

É por isso que acho seu erro surpreendente, já que tar não é covarde se você especificar um caminho.

tar não pode ler os dados do arquivo stdin para criar um arquivo, pois tar não terá como saber o que é um arquivo - onde um começa ou termina, qual é o caminho e metadados é.

    
por muru 18.02.2015 / 20:12
0

Veja minha resposta no stackexchange. É um script python que acrescenta stdin a um arquivo tar, dando-lhe um nome arbitrário.

    
por meuh 10.07.2015 / 07:24

Tags