Mam dwa foldery zawierające różne pliki. Niektóre pliki z pierwszego folderu mają dokładną kopię w drugim folderze. Chciałbym zastąpić je twardym linkiem. Jak mogę to zrobić?
Mam dwa foldery zawierające różne pliki. Niektóre pliki z pierwszego folderu mają dokładną kopię w drugim folderze. Chciałbym zastąpić je twardym linkiem. Jak mogę to zrobić?
Odpowiedzi:
Znam 4 rozwiązania wiersza polecenia dla systemu Linux. Mój preferowany jest ostatni wymieniony tutaj rdfind
, ze względu na wszystkie dostępne opcje.
fdupes
Przykładowe dane wyjściowe (z opcjami „pokaż rozmiar”, „rekurencyjny”):
$ fdupes -Sr .
17 bytes each:
./Dir1/Some File
./Dir2/SomeFile
hardlink
--dry-run
opcję. Przykładowe dane wyjściowe (zwróć uwagę, że moje dwa pliki mają nieco inne czasy modyfikacji, więc w drugim uruchomieniu mówię, aby to zignorować):
$ stat Dir*/* | grep Modify
Modify: 2015-09-06 23:51:38.784637949 -0500
Modify: 2015-09-06 23:51:47.488638188 -0500
$ hardlink --dry-run -v .
Mode: dry-run
Files: 5
Linked: 0 files
Compared: 0 files
Saved: 0 bytes
Duration: 0.00 seconds
$ hardlink --dry-run -v -t .
[DryRun] Linking ./Dir2/SomeFile to ./Dir1/Some File (-17 bytes)
Mode: dry-run
Files: 5
Linked: 1 files
Compared: 1 files
Saved: 17 bytes
Duration: 0.00 seconds
lipny
Przykładowe dane wyjściowe (z opcją „rekurencyjne”):
$ duff -r .
2 files in cluster 1 (17 bytes, digest 34e744e5268c613316756c679143890df3675cbb)
./Dir2/SomeFile
./Dir1/Some File
rdfind
find
?).Przykładowe dane wyjściowe:
$ rdfind -dryrun true -makehardlinks true .
(DRYRUN MODE) Now scanning ".", found 5 files.
(DRYRUN MODE) Now have 5 files in total.
(DRYRUN MODE) Removed 0 files due to nonunique device and inode.
(DRYRUN MODE) Now removing files with zero size from list...removed 0 files
(DRYRUN MODE) Total size is 13341 bytes or 13 kib
(DRYRUN MODE) Now sorting on size:removed 3 files due to unique sizes from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on first bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on last bytes:removed 0 files from list.2 files left.
(DRYRUN MODE) Now eliminating candidates based on md5 checksum:removed 0 files from list.2 files left.
(DRYRUN MODE) It seems like you have 2 files that are not unique
(DRYRUN MODE) Totally, 17 b can be reduced.
(DRYRUN MODE) Now making results file results.txt
(DRYRUN MODE) Now making hard links.
hardlink ./Dir1/Some File to ./Dir2/SomeFile
Making 1 links.
$ cat results.txt
# Automatically generated
# duptype id depth size device inode priority name
DUPTYPE_FIRST_OCCURRENCE 1 1 17 2055 24916405 1 ./Dir2/SomeFile
DUPTYPE_WITHIN_SAME_TREE -1 1 17 2055 24916406 1 ./Dir1/Some File
# end of file
Duplicate Commander to możliwe rozwiązanie w systemie Windows:
Duplicate Commander to darmowa aplikacja, która umożliwia znajdowanie i zarządzanie zduplikowanymi plikami na komputerze. Duplicate Commander zawiera wiele funkcji i narzędzi, które pozwalają odzyskać miejsce na dysku z tych duplikatów.
Cechy:
Replacing files with hard links Replacing files with soft links ... (and many more) ...
W przypadku systemu Linux skrypt Bash można znaleźć tutaj .
Wyszukiwarka duplikatów i samych plików to kolejne rozwiązanie w systemie Windows:
Wyszukiwarka duplikatów i samych plików (Wyszukiwarka duplikatów) to aplikacja do wyszukiwania duplikatów plików (klonów) i twardych łączy NTFS do tego samego pliku. Przeszukuje zduplikowaną zawartość pliku bez względu na nazwę pliku (używane jest prawdziwe porównanie bajtów do bajtów). Ta aplikacja pozwala nie tylko usuwać duplikaty plików lub przenosić je w inne miejsce, ale także zastępować duplikaty twardymi linkami NTFS (unikalne!)
Na swoim komputerze miałem fajne darmowe narzędzie o nazwie Link Shell Extension; nie tylko świetnie nadawał się do tworzenia twardych i symbolicznych linków, ale także połączeń! Ponadto dodano niestandardowe ikony, które pozwalają łatwo zidentyfikować różne typy łączy, nawet te, które istniały już przed instalacją; Czerwone strzałki reprezentują na przykład twarde linki, podczas gdy zielone reprezentują dowiązania symboliczne ... a łańcuchy oznaczają skrzyżowania.
Niestety odinstalowałem oprogramowanie jakiś czas temu (podczas masowej dezinstalacji różnych programów), więc nie mogę już ręcznie tworzyć linków, ale ikony nadal pojawiają się automatycznie, gdy Windows wykryje łącze Hard, Symbolic lub Junction.
Bardzo polecam jdupes . Jest to ulepszony widelec Fdupes , ale zawiera również:
--linkhard
lub-L
w skrócieNa swoje pytanie możesz po prostu wykonać $ jdupes -L /path/to/your/files
.
Możesz sklonować i zbudować najnowsze źródło z repozytorium GitHub, ponieważ projekt jest nadal w fazie aktywnego rozwoju.
Pliki binarne systemu Windows są również dostępne tutaj. Pakiety binarne są dostępne w niektórych dystrybucjach Linux / BSD - tak naprawdę to po raz pierwszy to znalazłem $ apt search
.