บีบอัดไฟล์ขณะอ่านข้อมูลจาก STDIN


127

เป็นไปได้ไหมที่จะบีบอัด (สร้างไฟล์เก็บถาวรที่บีบอัด) ขณะอ่านจาก stdin บน Linux


ฉันโหวตให้ปิดคำถามนี้เป็นนอกประเด็นเพราะเป็นของ Unix & Linux
Dan Dascalescu

คำตอบ:


180

ใช่ใช้ gzip สำหรับสิ่งนี้ วิธีที่ดีที่สุดคือการอ่านข้อมูลเป็นอินพุตและเปลี่ยนเส้นทางไฟล์บีบอัดไปยังเอาต์พุตเช่น

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

cat test.csvจะส่งข้อมูลเป็น stdout และการใช้ pipe-sign gzip จะอ่านข้อมูลนั้นเป็น stdin ตรวจสอบให้แน่ใจว่าได้เปลี่ยนเส้นทางเอาต์พุต gzip ไปยังไฟล์บางไฟล์เนื่องจากข้อมูลที่บีบอัดจะไม่ถูกเขียนไปยังเทอร์มินัล


4
โปรดทราบว่าไฟล์ test.csv.gz ยังคงมีขนาด 0 จนกว่าฟลักซ์ข้อมูลจะปิด
MUY Belgium

... แล้วจะทำอย่างไร? มันแยกคำถามกันจริงๆเหรอ?
russellpierce

9
สิ่งนี้ใช้ได้กับxz:mysqldump mydb | xz > dbdump.sql.xz
jeroen

1
สามารถใช้ระดับเริ่มต้นคือการบีบอัด-9 -6
Pablo A

110

ใช่gzipจะให้คุณทำสิ่งนี้ หากคุณเพียงแค่เรียกใช้gzip > foo.gzมันจะบีบอัด STDIN ไปยังไฟล์ foo.gz some_command | gzip > foo.gzนอกจากนี้คุณยังสามารถเข้าสู่ข้อมูลท่อมันเหมือน


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.