Nén tệp trong khi đọc dữ liệu từ STDIN


127

Có thể nén (tạo một kho lưu trữ nén) dữ liệu trong khi đọc từ stdin trên Linux không?


Tôi đang bỏ phiếu để đóng câu hỏi này ngoài chủ đề vì nó thuộc về Unix & Linux
Dan Dascalescu

Câu trả lời:


180

Có, sử dụng gzip cho việc này. Cách tốt nhất là đọc dữ liệu dưới dạng đầu vào và chuyển hướng tệp nén sang đầu ra tức là

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

cat test.csvsẽ gửi dữ liệu dưới dạng thiết bị xuất chuẩn và sử dụng gzip ký hiệu đường ống sẽ đọc dữ liệu đó dưới dạng stdin. Đảm bảo chuyển hướng đầu ra gzip sang một số tệp vì dữ liệu nén sẽ không được ghi vào thiết bị đầu cuối.


4
Lưu ý rằng các tệp test.csv.gz vẫn có kích thước 0 cho đến khi thông lượng dữ liệu được đóng lại.
MUY Bỉ

... và làm thế nào để làm điều đó? Có thực sự là một câu hỏi riêng biệt?
russellpierce 8/03/2015

9
Điều này cũng hoạt động với xz:mysqldump mydb | xz > dbdump.sql.xz
jeroen

1
Có thể sử dụng -9, mức nén mặc định là -6.
Pablo A

110

Vâng, gzipsẽ cho phép bạn làm điều này. Nếu bạn chỉ đơn giản chạy gzip > foo.gz, nó sẽ nén STDIN vào tệp foo.gz. Bạn cũng có thể dẫn dữ liệu vào nó, như thế nào some_command | gzip > foo.gz.


1

gzip > stdin.gzcó lẽ? Nếu không, bạn cần phải xác thịt ra câu hỏi của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.