Sposoby deduplikacji plików

10

Chcę po prostu wykonać kopię zapasową i zarchiwizować pliki na kilku komputerach. Niestety pliki zawierają niektóre duże pliki, które są tym samym plikiem, ale są przechowywane inaczej na różnych komputerach. Na przykład może istnieć kilkaset zdjęć skopiowanych z jednego komputera na drugi jako kopia zapasowa ad hoc. Teraz, gdy chcę utworzyć wspólne repozytorium plików, nie chcę kilku kopii tego samego zdjęcia.

Jeśli skopiuję wszystkie te pliki do jednego katalogu, czy istnieje narzędzie, które może przejść i rozpoznać zduplikowane pliki i dać mi listę, a nawet usunąć jeden z duplikatów?

Użytkownik 1
źródło

Odpowiedzi:

3

Utwórz sumę md5 każdego pliku, duplikaty md5sums sugerują (ale nie gwarantuje) duplikatów plików.

bryan
źródło
1
jednak zdecydowanie „sugerują” :) :) a jeśli pliki są tego samego rozmiaru, prawdopodobieństwo, że sugestia jest poprawna, jest wyjątkowo wysokie
ostrzega
2

Możesz użyć dupemerge, aby zamienić identyczne pliki w twarde linki . To zajmie bardzo dużo czasu na dużym zestawie plików. Skróty plików SHA (lub MD5) prawie na pewno będą działały szybciej, ale będziesz musiał zrobić więcej starań, aby znaleźć duplikaty. Prawdopodobieństwo przypadkowego zderzenia jest tak niskie, że w rzeczywistości można go zignorować. (W rzeczywistości wiele produktów do deduplikacji już to robi.)

Najlepszym sposobem radzenia sobie ze zdjęciami i muzyką jest zdobycie narzędzi dostosowanych do znajdowania duplikatów tych elementów. Zwłaszcza, że ​​nie możesz mieć plików, które są identyczne na poziomie binarnym po wejściu w grę takich elementów, jak tagi, przycinanie lub różnice w kodowaniu. Będziesz potrzebować narzędzi, które mogą znaleźć zdjęcia, które „wyglądają” tak samo, i muzykę, która „brzmi” tak samo, nawet jeśli w plikach wprowadzono drobne zmiany.

afrazier
źródło
1
hardlinkjest bardzo szybki (zajęło 200 sekund dla plików 1,2 mln, 320 GB)
Marcel Waldvogel
1

Cóż, jeśli masz taką możliwość, możesz skonfigurować system plików do deduplikacji i umieścić na nim kopie zapasowe. Spowoduje to nie tylko deduplikację całych plików, ale także podobnych fragmentów plików. Na przykład, jeśli masz ten sam plik JPEG w kilku miejscach, ale z różnymi znacznikami EXIF ​​w każdej wersji, system plików do deduplikacji zapisuje dane obrazu tylko raz.

Systemy plików do deduplikacji obejmują lessfs, ZFS i SDFS.

Ryan C. Thompson
źródło
1
Nie mogę mówić o deduplikacji na SDFS lub lessfs, ale Dedupe na ZFS nie działa w ten sposób. Sprawdza na poziomie bloku, więc identyczne pliki zostaną prawdopodobnie oznaczone jako deduplikowane, ale pliki z innym nagłówkiem prawdopodobnie nie zostaną oznaczone. Ponadto pliki mniejsze niż Twój rozmiar ZFS (domyślnie jest to 128 KB) mogą być spakowane razem w jednym bloku, więc nie mogą skorzystać z deduplikacji.
notpeter
Deduplikowany system plików (zfs lub btrfs) oszczędza miejsce na hoście kopii zapasowej. Nie oszczędza ilości przesłanych danych. Pomysłem jest obliczenie skrótu dla plików i wysłanie go do hosta kopii zapasowej. gdy pojawia się komunikat „Mam”, kopia zapasowa tego pliku jest wykonywana. Jest to realizowane na bardzo drogim (pieniężnym) oprogramowaniu do tworzenia kopii zapasowych. Nigdy nie słyszałem o tym na open source. Ale może jest już zaimplementowany, kto wie :)
Znik
@Znik rsync --link-destjest twoim przyjacielem, jeśli chcesz oszczędzać na czytaniu / przesyłaniu. Proste wprowadzenie jest tutaj: netfuture.ch/2013/08/…
Marcel Waldvogel
działa, testując i-węzły przypisane do pliku. ale gdy deduplikacja jest ukryta, na przykład w systemie plików squashfs, rsync nie może tego sprawdzić i przesyła te same dane wiele razy.
Znik
0

Kiedy robiłem takie rzeczy, dowiedziałem się, że o wiele bardziej angażujące / oszczędzające czas jest faktyczne samodzielne przeglądanie plików w wolnym czasie przez kilka tygodni. Możesz odróżnić rzeczy o wiele lepiej niż Twój komputer.

Jeśli się nie zgadzasz, sugeruję EasyDuplicateFinder . Jak już wspomniałem powyżej, na przykład 5 GB plików zajmie dużo czasu.

Z drugiej strony Crashplan robi to, co robiłeś wcześniej, ale w znacznie bardziej zorganizowany sposób, nie powodujący problemów z wersją.

digitxp
źródło
0

Inną możliwością, zakładając, że maszyny, których kopie zapasowe będą obsługiwać, będzie to wspierać, jest użycie czegoś takiego rsync.

Jeśli przejdziesz rsyncod A do B, a następnie od C do B, a następnie od D do B itp., Dokładne duplikaty (tj. Według nazwy pliku) zostaną wyeliminowane (i zsynchronizowane między komputerami, których kopię zapasową wykonujesz).

Jeśli jednak nie chcesz, aby wszystkie były ze sobą zsynchronizowane, nie jest to najlepszy sposób.

królikarnia
źródło
0

W przypadku plików graficznych użyj findimagedupes . Jest także zapakowany w debian .

cweiske
źródło
findimagedupes jest przeznaczony do zdjęć lub grafiki, być może przekonwertowany z jednego formatu na inny. zdjęcia (i home) to tylko przykład. Mogą to być dowolne inne duże pliki.
Znik
0

Dowiązania twarde wykonują deduplikację tylko wtedy, gdy cały plik jest identyczny. Jeśli nagłówki (EXIF, ID3,…) lub metadane (właściciel) różnią się, nie zostaną połączone.

Jeśli masz szansę na użycie systemu plików z obsługą deduplikacji bloków (ZFS, btrfs,…), użyj tego zamiast tego. Bardzo lubię obsługę deduplikacji offline (aka wsadowej ) btrfs, która obsługuje deduplikację na poziomie zasięgu i nie zużywa stale dużej ilości pamięci (jak deduplikacja online ZFS).

Zaletą deduplikacji jest to, że użytkownik może modyfikować pliki bez zauważania innych kopii (co może nie mieć zastosowania w twoim przypadku, ale w innych).

Doskonałą dyskusję znajdziesz na https://btrfs.wiki.kernel.org/index.php/Deduplication .

Marcel Waldvogel
źródło