Kompres file sambil membaca data dari STDIN

127

Apakah mungkin untuk mengompres (membuat arsip terkompresi) data saat membaca dari stdin di Linux?

Ruang
sumber
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena itu milik Unix & Linux
Dan Dascalescu

Jawaban:

180

Ya, gunakan gzip untuk ini. Cara terbaik adalah membaca data sebagai input dan mengarahkan file terkompresi ke output yaitu

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

cat test.csvakan mengirim data sebagai stdout dan menggunakan tanda pipa gzip akan membaca data itu sebagai stdin. Pastikan untuk mengarahkan keluaran gzip ke beberapa file karena data yang dikompresi tidak akan ditulis ke terminal.

Ruang
sumber
4
Perhatikan bahwa file test.csv.gz tetap berukuran 0 hingga fluks data ditutup.
MUY Belgium
... dan bagaimana caranya? Apakah ini benar-benar pertanyaan terpisah?
russellpierce
9
Ini juga bekerja dengan xz:mysqldump mydb | xz > dbdump.sql.xz
Jeroen
1
Bisa digunakan -9, level kompresi default adalah -6.
Pablo A
110

Ya, gzipakan membiarkan Anda melakukan ini. Jika Anda hanya menjalankan gzip > foo.gz, itu akan mengkompres STDIN ke file foo.gz. Anda juga dapat menyalurkan data ke dalamnya, seperti some_command | gzip > foo.gz.

jtbandes
sumber
1

gzip > stdin.gzmungkin? Jika tidak, Anda perlu menyempurnakan pertanyaan Anda.

retracile
sumber