Có một định dạng nén hỗ trợ các hoạt động đuôi?


12

Tôi đang tìm một định dạng nén hỗ trợ tailed. Có nghĩa là bạn không phải đọc toàn bộ tệp để nhận được các byte không nén X cuối cùng. Điều này có thể với bất kỳ định dạng nào như bzip2, xz, lzma, v.v không?

Tôi đã từng mã hóa một cái gì đó bằng cách sử dụng gzip có thể làm điều này. Về cơ bản ở mức thực sự cao, những gì nó đã làm là nhiều khối gzip với nhau, sau đó tôi có một tiện ích có thể tìm kiếm ngược từ cuối tệp cho đến khi khối cuối cùng bắt đầu. Các tệp này hoàn toàn có thể đọc được bởi các tiện ích gzip tiêu chuẩn, nhưng tôi hy vọng có một cái gì đó được chuẩn hóa hơn một chút.

Mục đích cuối cùng của việc này là cho các tệp nhật ký mà tôi có thể ghi ra được nén, và sau đó có thể gửi tailchúng (ngay cả khi chúng chưa được ghi đầy đủ; tức là phát trực tuyến) mà không phải chờ toàn bộ nội dung được đọc từ đĩa hoặc mạng.

Câu trả lời:


5

gzip có một tùy chọn --rsyncable về cơ bản giống nhau . Phần không chuẩn sẽ là tiện ích "ztail" nhận dạng khối gzip, nhưng có vẻ như bạn đã xử lý vấn đề đó rồi.


2
Tất nhiên tùy chọn đó giới hạn bạn một cách hiệu quả ở mức độ nén -0,5, ngay cả khi bạn chỉ định -9.
psusi

Bạn lấy phiên bản gzip hỗ trợ này ở đâu? Nếu đây là một tùy chọn tại một thời điểm, nó dường như đã bị xóa.
Patrick

Các bản phân phối dựa trên Debian có nó - đây là từ Ubuntu 10.04: root @ backup1: ~ # gzip -V gzip 1.3.12 root @ backup1: ~ # gzip -h | egrep rsync --rsyncable Tạo kho lưu trữ thân thiện với rsync
the-wợi

Rõ ràng, một số người bảo trì distro khác (ví dụ Fedora) dường như cũng bao gồm các bản vá. Và có một bản vá cho một gzip cũ ở đây: samba.org/netfilter/diary/gzip.rsync.patch có thể áp dụng cho phiên bản mới hơn với các sửa đổi nhỏ, nếu bạn thực sự cần phải tự biên dịch.
the-wợi

BTW, các cuộc thảo luận cho thấy tác động đối với việc nén là không đáng kể (trong vòng 2-3%), mặc dù số dặm cho một tập dữ liệu cụ thể có thể khác nhau. Nếu bạn cần nén "có sẵn" với các thuật toán thích ứng như khử rung, hầu như không có cách nào để thiết lập lại thuật toán mọi lúc và sau đó - tất nhiên điều này sẽ tạo ra một cú đánh hiệu quả nén.
the-wợi

0

FWIW: Tôi đã phát triển một công cụ dòng lệnh dựa trên mã nguồn zran.c của zlib để tạo các chỉ mục cho các tệp gzip: https://github.com/circulosmeos/gztool

Nó có thể tạo một đuôi liên tục của một tệp gzip với -Ttùy chọn. Hoặc chỉ là một đuôi của nội dung cuối cùng và dừng lại, với -t(Nhiều tùy chọn khác có sẵn).

Lưu ý rằng đối với bất kỳ hành động nào trong số này gztoolsẽ tạo một tệp chỉ mục xen kẽ với hành động đó.

Các chỉ mục có thể bị gián đoạn bất cứ lúc nào và được sử dụng lại và / hoặc hoàn thành sau đó. Và như gztoolcó thể được lệnh để trích xuất dữ liệu từ bất kỳ vị trí nào trong tệp và sẽ tạo chỉ mục xen kẽ với hành động đó, sẽ không bao giờ mất thời gian khi sử dụng 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.