Komprimieren Sie Dateien beim Lesen von Daten aus STDIN

127

Ist es möglich, Daten beim Lesen von stdin unter Linux zu komprimieren (ein komprimiertes Archiv zu erstellen)?

Raum
quelle
Ich
stimme dafür,

Antworten:

180

Ja, verwenden Sie dazu gzip. Der beste Weg ist, Daten als Eingabe zu lesen und die komprimierte zur Ausgabedatei umzuleiten, d. H.

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

cat test.csvsendet die Daten als stdout und mit dem Pipe-Sign liest gzip diese Daten als stdin. Stellen Sie sicher, dass Sie die gzip-Ausgabe in eine Datei umleiten, da komprimierte Daten nicht in das Terminal geschrieben werden.

Raum
quelle
4
Beachten Sie, dass die Dateien test.csv.gz die Größe 0 haben, bis der Datenfluss geschlossen wird.
MUY Belgien
... und wie macht man das? Ist es wirklich eine separate Frage?
Russellpierce
9
Dies funktioniert auch mit xz:mysqldump mydb | xz > dbdump.sql.xz
Jeroen
1
Könnte verwendet werden -9, Standardkomprimierungsstufe ist -6.
Pablo A
110

Ja, gziplassen Sie das tun. Wenn Sie einfach ausführen gzip > foo.gz, wird STDIN in die Datei foo.gz komprimiert. Sie können auch Daten hineinpfeifen, wie z some_command | gzip > foo.gz.

jtbandes
quelle
1

gzip > stdin.gzvielleicht? Andernfalls müssen Sie Ihre Frage konkretisieren.

retracile
quelle