Czy istnieje program do kompresji lub archiwizacji dla systemu Windows, który również wykonuje deduplikację? [Zamknięte]

12

Szukam programu do archiwizacji, który może wykonać deduplikację (dedupe) na archiwizowanych plikach. Po rozpakowaniu archiwum oprogramowanie odłożyłoby wszystkie pliki usunięte podczas procesu kompresji.

Do tej pory znalazłem:

Czy ktoś wie o innych?

Byłby to prawdopodobnie świetny dodatek do 7-zip.

Larry Silverman
źródło

Odpowiedzi:

12

Prawie wszystkie współczesne archiwizatory robią to dokładnie, jedyną różnicą jest to, że nazywają to „solidnym” archiwum, ponieważ we wszystkich plikach są one łączone w jeden strumień przed dostarczeniem do algorytmu kompresji. Różni się to od standardowej kompresji zip, która kompresuje każdy plik jeden po drugim i dodaje każdy skompresowany plik do archiwum.

7-zip ze swej natury skutecznie osiąga usuwanie duplikatów. 7-Zip na przykład wyszuka pliki, posortuje je według podobnych typów plików i nazw plików, więc dwa pliki tego samego typu i dane zostaną umieszczone obok siebie w strumieniu przechodzącym do algorytmów kompresora. Kompresor zobaczy wtedy dużo danych, które widział bardzo niedawno, a te dwa pliki zobaczą duży wzrost wydajności kompresji w porównaniu do kompresji plików jeden po drugim.

Linux widział podobne zachowanie od dawna dzięki rozpowszechnieniu ich formatu „.tgz” (lub „.tar.gz”, aby użyć swojej pełnej formy), ponieważ tar po prostu łączy wszystkie pliki w jeden strumień (choć bez sortowanie i grupowanie plików), a następnie kompresowanie za pomocą gzip. To, czego brakuje, to sortowanie, które wykonuje 7-zip, co może nieco zmniejszyć wydajność, ale wciąż jest znacznie lepsze niż zwykłe łączenie wielu indywidualnie skompresowanych plików w sposób, w jaki robi to zip.

Mokubai
źródło
uczyć się czegoś nowego każdego dnia. Nie zdawałem sobie sprawy, że zip skompresował każdy plik osobno, ale po przeprowadzeniu kilku testów na moim komputerze zdałem sobie sprawę, że rzeczywiście masz rację. bardzo interesujące, dziękuję!
CenterOrbit
7ip wykonuje uczciwie zadanie deduplikacji, ale jest również zaprojektowany do wydajnego kompresowania danych niebędących duplikatami, a do tego celu wykorzystuje dużo procesora i pamięci, co czyni go bardzo nieefektywnym sposobem na deduplikację danych. Jeśli skompresujesz dwa identyczne pliki 100 MB, próba skutecznego skompresowania pierwszego pliku będzie wymagała wielu wysiłków, a dopiero potem (jeśli rozmiar słownika będzie wystarczająco duży) skompresuj drugi plik jako duplikat pierwszego.
mwfearnley
Czy gzip nie .tar.gzkompresuje tylko stosunkowo niewielkich bloków (takich jak 900 KB) jednocześnie całkowicie niezależnie od siebie, a zatem nie ma możliwości deduplikacji dwóch dużych, ale identycznych plików (np. Kilka obrazów 4 MB)?
binki
Np. 7z był w stanie deduplikować między dużymi plikami, ale gzip nie: gist.github.com/binki/4cf98fb4f1f4aa98ee4a00edaf6048fa
binki
ciekawym podejściem jest „dodanie git” do plików, a następnie skompresowanie folderu .git
beotung
4

Używanie deduplikacji w procesie kompresji nie ma sensu. Większość algorytmów kompresji tworzy tak zwany „słownik”, który będzie szukał najczęściej używanych lub ponownie wykorzystywanych bitów danych. stamtąd będzie po prostu odwoływał się do hasła słownika, zamiast pisać od nowa całe słowo. W ten sposób większość procesów kompresji już wycina zbędne lub zduplikowane dane ze wszystkich plików.

Na przykład, jeśli weźmiesz plik 1 MB i skopiujesz go 100 razy pod inną nazwą za każdym razem (łącznie 100 MB miejsca na dysku), a następnie skompresujesz go w pliku 7zip lub zip, będziesz miał plik zip o łącznej wielkości 1 MB. Wynika to z faktu, że wszystkie twoje dane zostały umieszczone w jednym wpisie słownika i zostały przywołane 100 razy, co zajmuje bardzo mało miejsca.

Jest to bardzo proste wyjaśnienie tego, co się dzieje, ale kwestia ta nadal jest dobrze przekazywana.

CenterOrbit
źródło
1
Ponieważ rozmiar słownika jest bardzo ograniczony w przypadku większości archiwów kompresji, nie jest to ważne w codziennym użyciu. Wypróbuj to z 50 MB plików, a skompresowany rozmiar podwoi się z dwoma identycznymi plikami wejściowymi.
Chaos_99
1
Pliki zip, w przeciwieństwie do plików 7zip, nie obsługują deduplikacji między plikami. Pliki zip kompresują i przechowują każdy plik osobno, więc duplikaty plików będą po prostu wielokrotnie przechowywane w archiwum.
mwfearnley
1
Chociaż 7zip obsługuje deduplikację między plikami, jest przeznaczony do wyszukiwania i kompresji znacznie krótszych dopasowań. Jego algorytmy są dużo wolniejsze i wymagają więcej pamięci niż to, co jest potencjalnie możliwe dla czegoś zaprojektowanego do znajdowania duplikacji danych na dużą skalę.
mwfearnley
4

7-Zip, zip, gzip i wszystkie inne archiwizatory nie wykrywają identycznych obszarów, które są daleko od siebie, takich jak zaledwie kilka megabajtów lub więcej, wewnątrz tego samego pliku lub umieszczone w różnych pozycjach w różnych plikach.

Więc nie, normalne archiwizatory nie działają tak dobrze jak exdupe i inne, w niektórych situracjach. Możesz to zobaczyć, jeśli skompresujesz niektóre maszyny wirtualne lub inne rzeczy.

Ian
źródło
1
To jest poprawne. Gdy tylko unikalna objętość danych przekroczy rozmiar słownika kompresorów, kompresja spada. exdupe oferuje doskonałą wydajność dla dużych ilości danych.
usr