Como tar / descompactar a saída em tempo real


27

Qual é a maneira idiomática de fazer o seguinte

  • alcatrão para stdout
  • leia esta saída do tar do stdout e extraia para outra pasta.

Minha solução é tar --to-stdout .. | tar -C somefolder -xvf -

Mas pode haver uma maneira mais idiomática de fazer isso.

Respostas:


34

A mesma -f -opção também funciona para tarar.

tar -cf - something | tar -C somefolder -xvf -

O tar GNU usa stdio por padrão:

tar -c something | tar -C somefolder -xv

rsync também é popular.

rsync -av something/ somefolder/

9

Apenas adicionando outro caso de uso aqui. Eu tinha uma grande estrutura de diretórios em um sistema quase sem espaço em disco e queria terminar com um arquivo tar.gz da estrutura de diretórios em outra máquina com muito espaço.

tar -czf - big-dir | ssh user@host 'cat > /path/to/big-dir.tar.gz'

Isso economiza em sobrecarga de rede e significa que você não precisa tar pelo outro lado, caso deseje usar o rsync para a transferência.


O Netcat é perfeito para isso. (Cat de um host para outro host).
Hennes 25/06

3
@Hennes: com sua falta de autenticação, verificação de integridade, criptografia de dados, além de ter que iniciá-lo manualmente em ambos os lados para cada transferência individual (ou seja, 2 × o trabalho), parece um pouco menos do que perfeito
grawity

Na maioria das vezes, eu o compacto antes de despejá-lo na rede. Qualquer falha de integridade provavelmente aparecerá como erros de descompressão (embora eu nunca tenha recebido nenhum quando o usei). Quanto ao início de dois programas: Sim, é verdade.
Hennes 23/07

3
Pode ser mais trabalhoso, mas, para enviar um grande arquivo compactado por um link durante uma operação com intervalo de tempo entre máquinas em uma rede local segura ou por uma VPN, o canal através do nc será significativamente mais rápido que o SSH (em uma rede de 1 Gb, geralmente por um fator de 2). Envie uma soma md5 do arquivo para verificação de integridade.
Spooler
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.