Có một chương trình nén hoặc lưu trữ cho Windows cũng không trùng lặp? [đóng cửa]


12

Tôi đang tìm kiếm một chương trình lưu trữ có thể thực hiện sao chép (khấu trừ) trên các tệp đang được lưu trữ. Khi giải nén tệp lưu trữ, phần mềm sẽ đưa lại bất kỳ tệp nào đã xóa trong quá trình nén.

Cho đến nay tôi đã tìm thấy:

Bất cứ ai biết về bất kỳ người khác?

Đây có lẽ sẽ là một bổ sung tuyệt vời cho 7-zip.

Câu trả lời:


12

Hầu như tất cả các nhà lưu trữ hiện đại đều thực hiện chính xác điều này, điểm khác biệt duy nhất là họ coi đây là một kho lưu trữ "rắn", vì trong tất cả các tệp được nối vào một luồng trước khi được đưa vào thuật toán nén. Điều này khác với nén zip tiêu chuẩn, nén từng tệp một và thêm từng tệp nén vào kho lưu trữ.

7-zip bởi bản chất của nó đạt được hiệu quả khử trùng lặp. Ví dụ, 7-Zip sẽ tìm kiếm các tệp, sẽ sắp xếp chúng theo các loại tệp và tên tệp tương tự và do đó hai tệp cùng loại và dữ liệu sẽ được đặt cạnh nhau trong luồng đi đến các thuật toán của máy nén. Máy nén sau đó sẽ thấy rất nhiều dữ liệu mà nó đã thấy rất gần đây và hai tệp đó sẽ thấy hiệu suất nén tăng lên rất nhiều so với việc nén từng tệp một.

Linux đã thấy một hành vi tương tự trong một thời gian dài thông qua sự phổ biến của định dạng ".tgz" của họ (hoặc ".tar.gz" để sử dụng dạng đầy đủ của nó) vì tar chỉ đơn giản là hợp nhất tất cả các tệp vào một luồng (mặc dù không có sắp xếp và nhóm các tập tin) và sau đó nén bằng gzip. Điều này bỏ lỡ là việc sắp xếp mà 7-zip đang thực hiện, có thể làm giảm hiệu quả một chút nhưng vẫn tốt hơn rất nhiều so với việc đơn giản ghép rất nhiều tệp được nén riêng lẻ theo cách mà zip thực hiện.


học điều mới mỗi ngày. Tôi đã không nhận ra rằng zip đã nén từng tệp riêng biệt nhưng sau khi chạy một vài thử nghiệm trên máy tính của tôi, tôi nhận ra rằng bạn thực sự đúng. Rất thú vị, cảm ơn bạn!
CenterOrbit

7ip thực hiện công việc sao chép một cách công bằng, nhưng nó cũng được thiết kế để nén dữ liệu không trùng lặp một cách hiệu quả và sử dụng nhiều CPU và bộ nhớ để đạt được điều đó, điều này khiến cho việc sao chép dữ liệu rất kém hiệu quả. Nếu bạn nén hai tệp 100 MB giống hệt nhau, sẽ rất khó để thử và nén tệp đầu tiên một cách hiệu quả và chỉ sau đó (nếu kích thước từ điển đủ lớn) mới nén tệp thứ hai thành bản sao của tệp thứ nhất.
mwfearnley

Không gzip .tar.gzchỉ nén các khối tương đối nhỏ (như 900KB) tại một thời điểm hoàn toàn độc lập với nhau và do đó không có khả năng sao chép hai tệp lớn nhưng giống hệt nhau (ví dụ: một vài hình ảnh 4 MB)?
binki

Ví dụ: 7z đã có thể khấu trừ
binki

4

Không có điểm nào trong việc sử dụng sự trùng lặp với một quá trình nén. Hầu hết các thuật toán nén tạo ra cái được gọi là 'từ điển' sẽ tìm kiếm các bit dữ liệu phổ biến nhất hoặc được sử dụng lại. từ đó nó sẽ chỉ tham chiếu mục từ điển thay vì viết lại toàn bộ "từ". Theo cách này, hầu hết các quá trình nén đã cắt bỏ dữ liệu dư thừa hoặc trùng lặp khỏi tất cả các tệp.

Ví dụ: nếu bạn lấy tệp 1 MB và sao chép 100 lần với một tên khác nhau (tổng cộng 100 MB dung lượng ổ đĩa), thì bạn nén tệp đó trong tệp 7zip hoặc zip, bạn sẽ có tổng tệp 1 MB. Điều này là do tất cả dữ liệu của bạn đã được đưa vào một mục từ điển và được tham chiếu 100 lần, chiếm rất ít không gian.

Đây là một lời giải thích rất đơn giản về những gì xảy ra, nhưng điểm vẫn được truyền đạt tốt.


1
Vì kích thước từ điển rất hạn chế đối với hầu hết các tài liệu lưu trữ nén, điều này không hợp lệ trong sử dụng hàng ngày. Hãy thử điều này với các tệp 50MB và kích thước nén của bạn sẽ tăng gấp đôi với hai tệp đầu vào giống hệt nhau.
Chaos_99

1
Các tệp zip, không giống như các tệp 7zip, không hỗ trợ sao chép trên các tệp. Các tệp zip nén và lưu trữ từng tệp riêng biệt, vì vậy các tệp trùng lặp sẽ được lưu trữ nhiều lần trong kho lưu trữ.
mwfearnley

1
Mặc dù 7zip không hỗ trợ sao chép trên các tệp, nhưng nó được thiết kế để tìm và nén các kết quả khớp ngắn hơn nhiều. Các thuật toán của nó chậm hơn rất nhiều và tốn nhiều bộ nhớ hơn những gì có thể xảy ra đối với một thứ được thiết kế để tìm kiếm sự sao chép dữ liệu quy mô lớn.
mwfearnley

4

7-Zip, zip, gzip và tất cả các trình lưu trữ khác không phát hiện các khu vực giống hệt nhau cách xa nhau, chẳng hạn như chỉ một vài megabyte trở lên, trong cùng một tệp hoặc được đặt ở các vị trí khác nhau trong các tệp khác nhau.

Vì vậy, không, các nhà lưu trữ bình thường không thực hiện tốt như exdupe và những người khác, trong một số tình huống bão hòa. Bạn có thể thấy điều này nếu bạn nén một số máy ảo hoặc những thứ khác.


1
Chính xác. Ngay khi khối lượng dữ liệu duy nhất vượt quá kích thước từ điển của máy nén, quá trình nén sẽ giảm xuống. exdupe cung cấp hiệu suất vượt trội cho khối lượng dữ liệu lớn.
usr
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.