Czy istnieje prosty sposób na zastąpienie zduplikowanych plików twardymi linkami?


136

Szukam łatwego sposobu (polecenia lub serii poleceń, prawdopodobnie obejmujących find), aby znaleźć duplikaty plików w dwóch katalogach i zastąpić je w jednym katalogu twardymi dowiązaniami plików w drugim katalogu.

Oto sytuacja: jest to serwer plików, na którym wiele osób przechowuje pliki audio, każdy użytkownik ma własny folder. Czasami wiele osób ma kopie dokładnie tych samych plików audio. W tej chwili są to duplikaty. Chciałbym, żeby były twardymi linkami, aby zaoszczędzić miejsce na dysku twardym.


20
Jednym z problemów, na jakie możesz natknąć się w przypadku dowiązań twardych, jest to, że jeśli ktoś zdecyduje się zrobić coś z jednym ze swoich plików muzycznych, które zostały na stałe połączone, może przypadkowo wpłynąć na dostęp innych osób do ich muzyki.
Steven D

4
innym problemem jest to, że dwa różne pliki zawierające „Some Really Great Tune”, nawet jeśli zostały pobrane z tego samego źródła z tym samym koderem, najprawdopodobniej nie będą identyczne.
msw 13.10

3
lepszym rozwiązaniem może być posiadanie publicznego folderu z muzyką ...
Stefan,


1
@tante: Korzystanie z dowiązań symbolicznych nie rozwiązuje problemu. Gdy użytkownik „usuwa” plik, liczba linków do niego zmniejsza się, gdy liczba osiąga zero, pliki są naprawdę usuwane, to wszystko. Tak więc usuwanie nie stanowi problemu w przypadku plików dowiązanych na stałe, jedynym problemem jest próba edycji pliku (co jest nieprawdopodobne) lub zastąpienia go (całkiem możliwe, jeśli jest zalogowany).
maaartinus

Odpowiedzi:


41

Na stronie http://cpansearch.perl.org/src/ANDK/Perl-Repository-APC-2.002/eg/trimtrees.pl znajduje się skrypt perla, który robi dokładnie to, co chcesz:

Przejrzyj wszystkie katalogi wymienione w wierszu poleceń, oblicz sumy kontrolne MD5 i znajdź pliki z identycznym MD5. JEŻELI są równe, wykonaj prawdziwe porównanie, jeśli są naprawdę równe, zamień drugi z dwóch plików na twardy link do pierwszego.


Brzmi idealnie , dzięki !! Spróbuję i zaakceptuję, jeśli działa zgodnie z opisem!
Josh

3
Zrobiłem dokładnie to, o co prosiłem. Jednak wierzę, że ZFS z deduplikacją ostatecznie będzie dobrym rozwiązaniem, ponieważ odkryłem, że pliki miały niewielkie różnice, więc tylko kilka z nich mogło zostać dowiązanych na stałe.
Josh

11
Głosowałem za tym, ale po dalszych badaniach trochę tego nie zrobiłem. rdfindjest dostępny za pośrednictwem menedżerów pakietów dla WSZYSTKICH głównych platform (os x, linux, (cyg) win, solaris) i działa z niesamowitą natywną prędkością. Sprawdź więc odpowiedź poniżej.
oligofren

@ Oligofren Myślałem tak samo, ale potem uderzyłem [Errno 31] Too many links. Te skrypty wydają się być jedyną rzeczą, która sobie z tym radzi.
phunehehe

5
Sprawdzanie każdego pliku, a nie tylko plików, w których istnieje co najmniej jeden taki sam rozmiar, jest niepotrzebnie nieefektywne (i niepotrzebnie podatne na kolizje skrótu).
Charles Duffy

85

rdfindrobi dokładnie to, o co prosisz (w kolejności, dlaczego listy). Umożliwia usuwanie duplikatów, zastępowanie ich miękkimi lub twardymi linkami. W połączeniu z symlinkstobą możesz również uczynić dowiązanie symboliczne absolutnym lub względnym. Możesz nawet wybrać algorytm sumy kontrolnej (md5 lub sha1).

Ponieważ jest skompilowany, jest szybszy niż większość rozwiązań skryptowych: timew folderze 15 GiB z 2600 plikami na moim Macu Mini od 2009 roku zwraca to

9.99s user 3.61s system 66% cpu 20.543 total

(przy użyciu md5).

Dostępne w większości programów obsługi pakietów (np. MacPorts dla Mac OS X).


11
+1 Użyłem rdfindi pokochałem to. Ma -dryrun trueopcję, która da ci znać, co by zrobił. Zastąpienie duplikatów twardymi linkami jest tak proste, jak -makehardlinks true. Stworzyło fajny dziennik i dało mi znać, ile miejsca zostało zwolnione. Ponadto, zgodnie z testem autora , rdfind jest szybszy niż duff i fslint.
Daniel Trebbien

oooh, miło. Kiedyś korzystałem z fdupes, ale w najnowszym Ubuntu 14.10 brakuje jego opcji -L do łączenia duplikatów. Był dość powolny i nie istniał dla Homebrew na OSX, więc ta odpowiedź jest znacznie lepsza. Dzięki!
oligofren

Bardzo inteligentny i szybki algorytm.
ndemou

2
Podejrzewam, że wydajność tego narzędzia ma więcej wspólnego z samym algorytmem, a mniej z tym, czy jest to skompilowane narzędzie czy skrypt. W przypadku tego rodzaju operacji dysk będzie prawie zawsze wąskim gardłem. Tak długo, jak narzędzia skryptowe upewniają się, że podczas operacji na sumach kontrolnych trwają asynchroniczne operacje we / wy, powinny działać tak dobrze, jak natywny plik binarny.
cdhowie

rdfind jest bardzo zależny od nowego systemu operacyjnego i kompilatora. (nie będzie działać na CentOS 6.x bez prawie całkowitej przebudowy narzędzi programistycznych)
Cosmo F

49

Użyj fdupesnarzędzia:

fdupes -r /path/to/folderdaje listę duplikatów w katalogu (-r sprawia, że ​​jest rekurencyjna). Dane wyjściowe wyglądają następująco:


nazwa_pliku1
nazwa_pliku2

nazwa_pliku3
nazwa_pliku4
nazwa_pliku5


przy czym nazwa_1 i nazwa_2 są identyczne, a nazwa_3, nazwa_4 i nazwa_5 również są identyczne.


1
Uwaga Ubuntu: we wrześniu 2013 r. Nie miała stabilnej wersji (jest w wersji 1.50-PR2-3), więc aktualizacja nie pojawia się jeszcze w Ubuntu.
Stuart Axon

11
Właśnie próbowałem zainstalować fdupes_1.50-PR2-4 zarówno na Ubuntu, jak i Debianie, nie ma też flagi -L. Na szczęście budowanie z github.com/tobiasschulz/fdupes było bardzo łatwe.
neu242,

3
Spróbuj rdfind- jak fdupes, ale szybciej i dostępny również w OS X i Cygwin.
oligofren

6
fdupeswydaje się znajdować tylko duplikaty, a nie zastępować je twardymi linkami, więc nie jest odpowiedzią na pytanie IMO.
Calimo,

2
Istnieje podobne narzędzie o nazwie jdupesbazujące na fdupes, ale może również zastąpić zduplikowane pliki symbolami symlinks ( -l), hardlinks ( -L) lub poinstruować btrfs, aby zduplikował bloki na poziomie systemu plików ( -Bjeśli używasz btrfs).
Marius Gedminas

23

1
Dobra wskazówka, używam na zwykłym podstawowym code.google.com/p/hardlinkpy, ale to nie było przez jakiś czas aktualizowane ...
meduz

2
Wygląda na to, że jest podobny do oryginału hardlinkna Fedorze / RHEL / etc.

1
hardlinkjest teraz natywnym plikiem binarnym w wielu systemach pakietów Linuksa (od ~ 2014) i niezwykle szybki. W przypadku plików 1,2 mln (320 GB) zajęło to tylko 200 sekund (łączenie około 10% plików).
Marcel Waldvogel

FWIW, powyższe hardlinkzostało stworzone przez Juliana Andresa Klode, natomiast Fedorę hardlinkstworzył Jakub Jelinek (źródło: pagure.io/hardlink - nazwa pakietu Fedory : hardlink )
maxschlepzig

18

Jest to jedna z funkcji udostępnianych przez „fslint” - http://en.flossmanuals.net/FSlint/Introduction

Kliknij przycisk „Scal”:

Zrzut ekranu


4
-M będzie łączył duplikaty razem, -d usunie wszystkie oprócz jednego, i -t uruchomi się na sucho,
wypisując

1
Na Ubuntu jest to, co należy zrobić: sudo apt-get install fslint /usr/share/fslint/fslint/findup -m /your/directory/tree(katalog / usr / share / fslint / fslint / domyślnie nie znajduje się w $ PATH)
Jocelyn

14

Ponieważ twoim głównym celem jest oszczędzanie miejsca na dysku, istnieje inne rozwiązanie: usuwanie duplikacji (i prawdopodobnie kompresja) na poziomie systemu plików. W porównaniu z rozwiązaniem z twardym łączem nie ma problemu nieumyślnego wpływu na inne połączone pliki.

ZFS ma deduplikację (na poziomie bloku, nie na poziomie pliku) od wersji puli 23 i kompresję od dawna. Jeśli używasz Linuksa, możesz spróbować zfs-fuse lub jeśli używasz BSD, jest on natywnie obsługiwany.


Jest to prawdopodobnie sposób, w jaki w końcu pójdę, ale czy implementacja ZFS BSD robi deduplikację? Myślałem, że nie.
Josh

Ponadto system plików HAMMER w DragonFlyBSD ma obsługę deduplikacji.
hhaamu

14
Dedup ZFS jest przyjacielem nikogo. Tam, gdzie ZFS zaleca RAM 1 Gb na 1 TB dostępnego miejsca na dysku, jesteś cholernie szalony, jeśli próbujesz użyć deduplikacji z mniej niż 32 GB RAM na 1 TB wolnego miejsca na dysku. Oznacza to, że w przypadku zwierciadła 1 TB, jeśli nie masz pamięci RAM o pojemności 32 Gb, prawdopodobnie prędzej czy później napotkasz warunki bomby pamięci, które zatrzymają maszynę z powodu braku pamięci RAM. Byłem tam, zrobiłem to, wciąż wychodzę z PTSD.
killermist

4
Aby uniknąć nadmiernych wymagań pamięci RAM związanych z deduplikacją online (tj. Sprawdzaj każdy zapis), btrfsużywa deduplikacji wsadowej lub offline (uruchamiaj ją, gdy uznasz to za przydatne / konieczne) btrfs.wiki.kernel.org/index.php/Deduplication
Marcel Waldvogel

3
Aktualizacja siedem lat później: ostatecznie przeniosłem się do ZFS i próbowałem deduplikacji - okazało się, że jej wymagania dotyczące pamięci RAM były po prostu zbyt wysokie. Podstępne użycie migawek ZFS zapewniło rozwiązanie, z którego ostatecznie skorzystałem. (Skopiuj muzykę jednego użytkownika, migawkę i klon, skopiuj muzykę drugiego użytkownika do klonu, używając rsync --inplacetylko zmienionych bloków)
Josh


5

Aby znaleźć duplikaty plików, możesz użyć duff .

Duff to narzędzie wiersza polecenia systemu Unix do szybkiego znajdowania duplikatów w danym zestawie plików.

Po prostu uruchom:

duff -r target-folder

Aby automatycznie utworzyć dowiązania twarde do tych plików, musisz przeanalizować dane wyjściowe duff za pomocą bash lub innego języka skryptowego.


Naprawdę wolno - patrz rdfind.pauldreik.se/#g0.6
ndemou

5
aptitude show hardlink

Opis: Twarde linki łączy wiele kopii tego samego pliku Hardlink to narzędzie, które wykrywa wiele kopii tego samego pliku i zastępuje je twardymi linkami.

Pomysł został zaczerpnięty z http://code.google.com/p/hardlinkpy/ , ale kod został napisany od zera i licencjonowany na licencji MIT. Strona internetowa: http://jak-linux.org/projects/hardlink/


Jedyny wspomniany tutaj program dostępny dla Gentoo bez demaskowania i ze wsparciem hardlink, dzięki!
Jorrit Schippers,

4

Użyłem wielu narzędzi linkujących na twardo do Linuksa wymienionych tutaj. Ja też utknąłem z ext4 fs na Ubuntu i używałem jego cp -l i -s do twardego / miękkiego linkowania. Ale ostatnio zauważyłem lekką kopię strony podręcznika cp , co oznaczałoby oszczędność nadmiarowego miejsca na dysku, dopóki jedna strona nie zostanie zmodyfikowana:

   --reflink[=WHEN]
          control clone/CoW copies. See below

       When  --reflink[=always]  is specified, perform a lightweight copy, where the 
data blocks are copied only when modified.  If this is not possible the
       copy fails, or if --reflink=auto is specified, fall back to a standard copy.

Myślę, że zaktualizuję mój cpalias, aby zawsze zawierał --reflink=autoparametr teraz
Marcos

1
Czy ext4 naprawdę obsługuje --reflink?

7
Jest to obsługiwane w btrfs i OCFS2. Jest to możliwe tylko w systemach plików kopiowania przy zapisie, co nie jest w przypadku ext4. btrfs naprawdę się kształtuje. Uwielbiam go używać ze względu na reflink i migawki, dzięki czemu mniej boisz się wykonywać masowe operacje na dużych drzewach plików.
clacke

3

Wydaje mi się, że najpierw sprawdzenie nazwy pliku może przyspieszyć. Jeśli w dwóch plikach brakuje tej samej nazwy pliku, w wielu przypadkach nie uważałbym ich za duplikaty. Wydaje się, że najszybszą metodą byłoby porównanie w celu:

  • Nazwa pliku
  • rozmiar
  • suma kontrolna md5
  • zawartość bajtów

Czy jakieś metody to robią? Spójrz na duff, fdupes, rmlint, fslint, itd.

Następująca metoda została najczęściej głosowana w Commandlinefu.com : Znajdź zduplikowane pliki (najpierw na podstawie rozmiaru, a następnie skrótu MD5)

Czy porównanie nazw plików można dodać jako pierwszy krok, a rozmiar jako drugi krok?

find -not -empty -type f -printf "%s\n" | sort -rn | uniq -d | \
  xargs -I{} -n1 find -type f -size {}c -print0 | xargs -0 md5sum | \
  sort | uniq -w32 --all-repeated=separate

3
Używałem duff, fdupesi rmlint, i zdecydowanie polecam czytelnikom spojrzeć na trzeciej z nich . Ma doskonały zestaw opcji (i dokumentację). Dzięki temu mogłem uniknąć dużej ilości post-processingu, którego musiałem używać z innymi narzędziami.
dubiousjim

3
W mojej praktyce nazwa pliku jest najmniej wiarygodnym czynnikiem, na który można patrzeć, i całkowicie usunąłem go z wszelkich wysiłków, które podejmowałem w celu usunięcia duplikatu. Ile install.shplików można znaleźć w aktywnym systemie? Nie mogę policzyć, ile razy zapisałem plik i miałem konflikt nazw, z pewną zmianą nazwy w locie, aby go zapisać. Odwrotna strona: nie mam pojęcia, ile razy pobrałem coś z różnych źródeł w różnych dniach, ale okazało się, że to ten sam plik o różnych nazwach. (Co również zabija niezawodność znaczników czasu.) 1: Rozmiar, 2: Podsumowanie, 3: Zawartość bajtu.
Gypsy Spellweaver

@GypsySpellweaver: (1) zależy od osobistego przypadku użycia, nie zgadzasz się? W moim przypadku mam wiele przywracania z wielu kopii zapasowych, w których pliki o tej samej nazwie i zawartości istnieją w różnych folderach przywracania. (2) Twój komentarz wydaje się zakładać porównywanie tylko nazw plików . Nie sugerowałem wyeliminowania innych kontroli.
John, dlaczego

2

Ponieważ nie jestem fanem Perla, oto wersja bash:

#!/bin/bash

DIR="/path/to/big/files"

find $DIR -type f -exec md5sum {} \; | sort > /tmp/sums-sorted.txt

OLDSUM=""
IFS=$'\n'
for i in `cat /tmp/sums-sorted.txt`; do
 NEWSUM=`echo "$i" | sed 's/ .*//'`
 NEWFILE=`echo "$i" | sed 's/^[^ ]* *//'`
 if [ "$OLDSUM" == "$NEWSUM" ]; then
  echo ln -f "$OLDFILE" "$NEWFILE"
 else
  OLDSUM="$NEWSUM"
  OLDFILE="$NEWFILE"
 fi
done

Znajduje wszystkie pliki z tą samą sumą kontrolną (niezależnie od tego, czy są to duże, małe, czy już twarde łącza) i łączy je razem.

Można to znacznie zoptymalizować pod kątem powtarzanych przebiegów z dodatkowymi flagami find (np. Rozmiar) i pamięcią podręczną plików (dzięki czemu nie trzeba za każdym razem powtarzać sum kontrolnych). Jeśli ktoś jest zainteresowany mądrzejszą, dłuższą wersją, mogę ją opublikować.

UWAGA: Jak już wspomniano wcześniej, dowiązania twarde działają tak długo, jak długo pliki nie wymagają modyfikacji lub są przenoszone między systemami plików.


Jak mogę zmienić skrypt, aby zamiast linkować go, po prostu usunie duplikaty plików i doda wpis do pliku CSV usunięty plik -> Plik z linią. . ???
MR.GEWA

Pewnie. Linia twardego linku: echo ln -f "$ OLDFILE" "$ NEWFILE" Wystarczy zastąpić duplikat pliku twardym linkiem, aby zamiast tego można było zmienić go na $ NEWFILE.
spokojny

i jak w następnym wierszu napisz jakoś plik tekstowy $ OLDFILE-> NEWFILE ???
MR.GEWA

Ach, racja. Tak, dodaj wiersz po rm, na przykład: echo „$ NEWFILE” >> /var/log/deleted_duplicate_files.log
seren

2
Nie marnuj na nowo koła. Są bardziej dojrzałe rozwiązania dostępne, jak rdfind, który działa przy prędkościach rodzimych i wymaga tylko brew install rdfindczy apt-get install rdfindaby zainstalowane.
oligofren

1

Stworzyłem skrypt Perla, który robi coś podobnego do tego, o czym mówisz:

http://pastebin.com/U7mFHZU7

Zasadniczo, po prostu przegląda katalog, obliczając sumę SHA1 zawartych w nim plików, mieszając go i łącząc ze sobą dopasowania. Przydaje się przy wielu, wielu okazjach.


2
Mam nadzieję, że wkrótce to
spróbuję

2
@xenoterracide: z powodu wszystkich podobnych i bardziej dojrzałych rozwiązań, które już istnieją. zobacz inne odpowiedzi, zwłaszcza rdfind.
oligofren

1
@ oligofren Nie wątpię, że istnieją lepsze rozwiązania. TMTOWTDI Chyba.
amfetamachina



1

jdupes został wspomniany w komentarzu, ale zasługuje na własną odpowiedź, ponieważ prawdopodobnie jest dostępny w większości dystrybucji i działa dość szybko (po prostu uwolnił 2,7 GB z 98% pełnej partycji 158 GB (dysk SSD) w ciągu około minuty):

jdupes -rL /foo/bar

0

Jeśli będziesz robił twarde linki, zwróć uwagę na prawa do tego pliku. Informacja, właściciel, grupa, tryb, rozszerzone atrybuty, czas i lista ACL (jeśli go używasz) są przechowywane w INODE. Różne są tylko nazwy plików, ponieważ są one przechowywane w strukturze katalogów, a inne wskazują na właściwości INODE. To powoduje, że wszystkie nazwy plików powiązane z tym samym i-węzłem mają takie same prawa dostępu. Powinieneś zapobiec modyfikacji tego pliku, ponieważ każdy użytkownik może uszkodzić plik na innym. To jest proste. Wystarczy, że każdy użytkownik umieści inny plik pod tą samą nazwą. Numer i-węzła jest następnie zapisywany, a oryginalna zawartość pliku jest niszczona (zastępowana) dla wszystkich nazw podlinkowanych.

Lepszym sposobem jest deduplikacja na warstwie systemu plików. Możesz użyć BTRFS (ostatnio bardzo popularny), OCFS lub podobnego. Spójrz na stronę: https://en.wikipedia.org/wiki/Comparison_of_file_systems , szczególnie w tabeli Funkcje i deduplikacja danych w kolumnie. Możesz kliknąć i posortować :)

Spójrz szczególnie na system plików ZFS. Jest dostępny jako BEZPIECZNIK, ale w ten sposób działa bardzo wolno. Jeśli potrzebujesz natywnego wsparcia, zajrzyj na stronę http://zfsonlinux.org/ . Następnie musisz załatać jądro, a następnie zainstalować narzędzia ZFS do zarządzania. Nie rozumiem, dlaczego Linux nie obsługuje sterowników, jest to droga dla wielu innych systemów operacyjnych / jąder.

Systemy plików obsługują deduplikację na dwa sposoby, deduplikują pliki lub bloki. ZFS obsługuje blok. Oznacza to, że tę samą treść, która powtarza się w tym samym pliku, można deduplikować. Innym sposobem jest czas deduplikacji danych, może to być tryb online (zfs) lub offline (btrfs).

Zauważ, że deduplikacja zużywa pamięć RAM. Dlatego zapisywanie plików na woluminie ZFS zamontowanym za pomocą FUSE powoduje dramatycznie niską wydajność. Jest to opisane w dokumentacji. Ale możesz ustawić online włączanie / wyłączanie deduplikacji na poziomie głośności. Jeśli zauważysz, że jakieś dane powinny zostać deduplikowane, po prostu włącz deduplikację, przepisz jakiś plik do dowolnego pliku tymczasowego i ostatecznie zastąp. po tym możesz wyłączyć deduplikację i przywrócić pełną wydajność. Oczywiście do pamięci można dodać dowolne dyski pamięci podręcznej. Mogą to być bardzo szybkie dyski obrotowe lub dyski SSD. Oczywiście mogą to być bardzo małe dyski. W prawdziwej pracy jest to zamiennik pamięci RAM :)

Pod Linuksem powinieneś zadbać o ZFS, ponieważ nie wszystkie działają tak, jak powinny, szczególnie gdy zarządzasz systemem plików, tworzysz migawki itp., Ale jeśli wykonujesz konfigurację i nie zmieniasz jej, wszystko działa poprawnie. Innym sposobem jest zmiana Linuksa na opensolaris, natywnie obsługuje on ZFS :) To, co jest bardzo miłe w ZFS, działa zarówno jako system plików, jak i menedżer wolumenów podobny do LVM. Nie potrzebujesz go podczas korzystania z ZFS. Zobacz dokumentację, jeśli chcesz dowiedzieć się więcej.

Zwróć uwagę na różnicę między ZFS i BTRFS. ZFS jest starszy i bardziej dojrzały, niestety tylko pod Solaris i OpenSolaris (niestety uduszony przez oracle). BTRFS jest młodszy, ale ostatnio bardzo dobrze obsługiwany. Polecam świeże jądro. ZFS ma deduplikację online, która powoduje spowolnienie zapisu, ponieważ wszystko jest obliczane online. BTRFS obsługuje dedupliakcję off-line. Następnie oszczędza to wydajność, ale gdy host nie ma nic do roboty, od czasu do czasu uruchamiasz narzędzie do wykonywania deduplikacji. A BTRFS jest natywnie tworzony pod Linuksem. Może to dla ciebie lepszy FS :)


1
Podoba mi się podejście do deduplikacji offline (lub partii ) btrfs. Doskonałe omówienie opcji (w tym cp --reflinkopcji) tutaj: btrfs.wiki.kernel.org/index.php/Deduplication
Marcel Waldvogel

ZFS to nie tylko Solaris ani OpenSolaris. Jest natywnie obsługiwany we FreeBSD. Ponadto ZFS w systemie Linux jest oparty na sterownikach urządzeń; ZFS na FUSE to inna sprawa.
KJ Seefried

0

Twarde linki mogą nie być najlepszym pomysłem; jeśli jeden użytkownik zmieni plik, wpływa to na oba. Jednak usunięcie twardego łącza nie powoduje usunięcia obu plików. Ponadto nie jestem całkowicie pewien, czy twarde łącza zajmują tyle samo miejsca (na dysku twardym, a nie w systemie operacyjnym), jak wiele kopii tego samego pliku; zgodnie z systemem Windows (z rozszerzeniem Link Shell) robią to. To prawda, że ​​to Windows, a nie Unix ...

Moim rozwiązaniem byłoby utworzenie „wspólnego” pliku w ukrytym folderze i zastąpienie rzeczywistych duplikatów dowiązaniami symbolicznymi ... wtedy dowiązania symboliczne zostałyby osadzone z metadanymi lub alternatywnymi strumieniami plików, które rejestrowałyby jednak tylko dwa „pliki” różnią się od siebie, na przykład jeśli jedna osoba chce zmienić nazwę pliku lub dodać niestandardową okładkę albumu lub coś podobnego; może nawet być przydatny poza aplikacjami bazodanowymi, np. instalując wiele wersji tej samej gry lub oprogramowania i testując je niezależnie, nawet przy najmniejszych różnicach.


0

Najłatwiejszym sposobem jest użycie specjalnego programu dupeGuru

Screenshot preferencji dupeGuru

jak mówi dokumentacja

Opcje usuwania

Te opcje wpływają na sposób usuwania duplikatów. Przez większość czasu nie trzeba włączać żadnego z nich.

Połącz usunięte pliki:

Usunięte pliki są zastępowane linkiem do pliku referencyjnego. Masz do wyboru zastąpienie go dowiązaniem symbolicznym lub dowiązaniem twardym. ... dowiązanie symboliczne to skrót do ścieżki pliku. Jeśli oryginalny plik zostanie usunięty lub przeniesiony, łącze zostanie zerwane. Hardlink to link do samego pliku. Ten link jest tak dobry, jak „prawdziwy” plik. Tylko wtedy, gdy wszystkie twarde linki do pliku zostaną usunięte, sam plik zostanie usunięty.

W systemach OSX i Linux ta funkcja jest w pełni obsługiwana, ale w systemie Windows jest to nieco skomplikowane. Windows XP go nie obsługuje, ale obsługuje go Vista i nowsze. Jednak, aby funkcja działała, dupeGuru musi działać z uprawnieniami administracyjnymi.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.