Compactar arquivos enquanto lê dados do STDIN


127

É possível compactar (criar um arquivo compactado) dados durante a leitura do stdin no Linux?


Eu estou votando para fechar esta questão como off-topic porque pertence a Unix e Linux
Dan Dascalescu

Respostas:


180

Sim, use gzip para isso. A melhor maneira é ler os dados como entrada e redirecionar o arquivo compactado para saída, ou seja,

cat test.csv | gzip > test.csv.gz

cat test.csvenviará os dados como stdout e, usando o pipe-sign, o gzip lerá esses dados como stdin. Certifique-se de redirecionar a saída gzip para algum arquivo, pois os dados compactados não serão gravados no terminal.


4
Observe que os arquivos test.csv.gz permanecem com tamanho 0 até que o fluxo de dados seja fechado.
MUY Belgium

... e como alguém faz isso? É realmente uma pergunta separada?
russellpierce

9
Isso também funciona com xz:mysqldump mydb | xz > dbdump.sql.xz
jeroen

1
Pode usar -9, o nível de compactação padrão é -6.
Pablo A #

110

Sim, gzippermitirá que você faça isso. Se você simplesmente executar gzip > foo.gz, ele compactará STDIN no arquivo foo.gz. Você também pode canalizar dados para ele, como some_command | gzip > foo.gz.


1

gzip > stdin.gzpossivelmente? Caso contrário, você precisará detalhar sua pergunta.

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.