Comprima archivos mientras lee datos de STDIN


127

¿Es posible comprimir (crear un archivo comprimido) datos mientras se lee desde stdin en Linux?


Estoy votando para cerrar esta pregunta como fuera de tema porque pertenece a Unix y Linux
Dan Dascalescu

Respuestas:


180

Sí, usa gzip para esto. La mejor manera es leer los datos como entrada y redirigir el archivo comprimido a la salida, es decir

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

cat test.csvenviará los datos como stdout y usando pipe-sign gzip leerá esos datos como stdin. Asegúrese de redirigir la salida de gzip a algún archivo ya que los datos comprimidos no se escribirán en el terminal.


44
Tenga en cuenta que los archivos test.csv.gz permanecen de tamaño 0 hasta que se cierra el flujo de datos.
MUY Bélgica

... y cómo se hace eso? ¿Es realmente una pregunta separada?
russellpierce

9
Esto también funciona con xz:mysqldump mydb | xz > dbdump.sql.xz
jeroen

1
Podría usar -9, el nivel de compresión predeterminado es -6.
Pablo A

110

Sí, gzipte dejaré hacer esto. Si simplemente ejecuta gzip > foo.gz, comprimirá STDIN en el archivo foo.gz. También puede canalizar datos en él, como some_command | gzip > foo.gz.


1

gzip > stdin.gz¿quizás? De lo contrario, debe desarrollar su pregunta.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.