Tôi có hàng trăm tệp lớn tương tự (mỗi tệp 30 megabyte) mà tôi muốn nén. Mỗi cặp tệp có 99% dữ liệu giống nhau (chênh lệch ít hơn 1%), vì vậy tôi hy vọng sẽ không lưu trữ quá 40-50 megabyte.
Độc tập tin có thể được nén từ 30 MB đến 13-15 MB (với xz -1
, gz -1
, bzip2 -1
), nhưng khi nén hai hoặc nhiều file tôi muốn có kho lưu trữ với kích thước 13-15MB + N*0.3MB
trong đó N là số lượng file.
Khi sử dụng tar
(để tạo lưu trữ vững chắc) và xz -6
(để xác định từ điển nén lớn hơn một tệp - Cập nhật - điều này là không đủ! ), Tôi vẫn có kho lưu trữ với kích thước N*13MB
.
Tôi nghĩ rằng cả hai gzip
và bzip2
sẽ không giúp tôi vì họ có từ điển dưới 1 MB và luồng tar của tôi có số lần lặp lại cứ sau 30 MB.
Làm cách nào tôi có thể lưu trữ vấn đề của mình trong Linux hiện đại bằng các công cụ tiêu chuẩn?
Có thể điều chỉnh xz
để nén nhanh, nhưng sử dụng từ điển lớn hơn 30-60 MB?
Cập nhật : Đã lừa với tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz
. Không chắc chắn về sự cần thiết mf=hc4
và --memory=2G
các tùy chọn; nhưng dict=128M
đặt từ điển đủ lớn (lớn hơn một tệp) và mode=fast
làm cho quá trình nhanh hơn một chút -e
.
xz -1 --memory=2G
không giúp được gì, đã thử nghiệm trên 2 và 4 tệp từ bộ.