Tôi có nhiệm vụ định kỳ tách một tập hợp lớn (khoảng 1-2 GiB mỗi) đã nén các tệp nhật ký Apache vào một số phần (nói các đoạn 500K dòng). Các tập tin cuối cùng nên được gzipped một lần nữa để hạn chế việc sử dụng đĩa.Phân tách các tệp nhật ký bị nén mà không lưu trữ các phân tách đã được giải nén trên đĩa
Trên Linux tôi sẽ thường làm:
zcat biglogfile.gz | split -l500000
Các tập tin kết quả các file sẽ được đặt tên XAA, xab, xac, vv Vì vậy, tôi làm:
gzip x*
Hiệu quả của phương pháp này là kết quả trung gian này là các tệp lớn được lưu trữ tạm thời trên đĩa. Có cách nào để tránh việc sử dụng đĩa trung gian này không?
Tôi có thể (theo cách tương tự với những gì xargs không) đã chia ống đầu ra thông qua lệnh (như gzip) và nén lại đầu ra khi đang di chuyển không? Hoặc tôi đang nhìn sai hướng và có cách nào tốt hơn để làm điều này?
Cảm ơn.
Tôi sẽ xem xét triển khai chức năng tách kiểu theo ngôn ngữ kịch bản, nơi bạn có thể viết các dòng thẳng vào các tệp được nén. –