Kompres file sambil membaca data dari STDIN


127

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


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.


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.


1

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.