Comprimi i file durante la lettura dei dati da STDIN


127

È possibile comprimere (creare un archivio compresso) dati durante la lettura da stdin su Linux?


Sto votando per chiudere questa domanda come fuori tema perché appartiene a Unix e Linux
Dan Dascalescu,

Risposte:


180

Sì, usa gzip per questo. Il modo migliore è leggere i dati come input e reindirizzare il file compresso sul file di output, ad es

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

cat test.csvinvierà i dati come stdout e usando pipe-sign gzip leggerà quei dati come stdin. Assicurati di reindirizzare l'output di gzip su alcuni file poiché i dati compressi non verranno scritti sul terminale.


4
Si noti che i file test.csv.gz rimangono di dimensioni 0 fino alla chiusura del flusso di dati.
MUY Belgio,

... e come si fa? È davvero una domanda separata?
Russellpierce,

9
Questo funziona anche con xz:mysqldump mydb | xz > dbdump.sql.xz
jeroen il

1
Potrebbe usare -9, il livello di compressione predefinito è -6.
Pablo A

110

Sì, gzipti lascerò fare questo. Se esegui semplicemente gzip > foo.gz, comprimerà STDIN nel file foo.gz. Puoi anche reindirizzare i dati al suo interno, ad esempio some_command | gzip > foo.gz.


1

gzip > stdin.gzForse? Altrimenti, devi dare una risposta alla tua domanda.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.