Compactar diretamente stdout

1

alguém pode me dizer se é possível comprimir diretamente stdout?

Eu gostaria de fazer isso em uma etapa sem criar arquivos de arquivos temporários.txt ...

Exemplo:

cat file* > files.txt
tar -czf files.tar files.txt
rm files.txt

Isso é possível?

    
por Wolfy 08.11.2012 / 09:38

2 respostas

5

Você pode ignorar a tar parte de .tar.gz nesse caso, já que não precisa manipular vários arquivos e pule direto para gzip para compactação.

Para compactar

gzip < file > file.gz

Para descomprimir

gzip -d file.gz

ou equivalentemente

gunzip file.gz

Você também pode usar os utilitários de compactação bzip2 e xz com sintaxe semelhante. xz geralmente produz arquivos compactados menores que gzip ou bzip2 .

(nota de rodapé)

Se você estiver criando um arquivo compactado e, em seguida, usando scp para transferi-lo, poderá usar a compactação integrada:

cat file | ssh -C user@remote 'cat >> remote_file'

ou

scp -C file user@remote:/path/on/remote

ou

rsync -avz file user@remote:/path/on/remote    
    
por chronitis 08.11.2012 / 14:49
0

Deixe a opção f desativada.

Algo que fiz foi assim:

tar -cz *.xml

Isto imprime para stdout. Eu poderia então usar algum código para o ssh no servidor tar / gzip-los tudo e salvar localmente sem a necessidade de criar um novo arquivo no servidor.

    
por Sam 07.10.2016 / 22:50