Jak znaleźć twarde linki w systemie Windows?

33

Utworzyłem twarde linki w moim systemie plików Windows 7 za pomocą mklink. To było jakiś czas temu i nie pamiętam na pewno, gdzie i które pliki. Gdy korzystam z Eksploratora, wszystkie pliki wyglądają tak samo. Kiedy używam wiersza polecenia i wpisuję „dir”, wszystkie wyglądają tak samo.

Jak znaleźć twarde linki? Lub jak ustalić, czy określony plik JEST twardym łączem?

MM
źródło

Odpowiedzi:

33

Wszystkie pliki są twardymi linkami, z liczbą linków co najmniej 1.

Właśnie dlatego pliki wyglądają tak samo. Są takie same. Wygląda na to, że szukasz plików, w których jest więcej niż jeden link do pliku. Jest bardzo niewiele rzeczy, które odróżniają plik z liczbą linków większą niż jeden od pliku z liczbą linków wynoszącą jeden… z wyjątkiem liczby linków (i niektórych dziwnych zachowań w odniesieniu do atrybutów i znaczników daty).

I to jest bardzo łatwe do sprawdzenia za pomocą findpolecenia znajdującego się w pakiecie narzędzi Microsoft SFUA , działającym w Podsystemie dla aplikacji opartych na Uniksie :

odnaleźć . -linkuje +1

JdeBP
źródło
9
dla przypomnienia działa również cygwin / bin / find. Dzięki!
arcyqwerty
6
Aby wyjaśnić, że „Microsoft find”, o którym mowa w tym rozwiązaniu, nie jest domyślnie zainstalowanym systemem Windows 7. Musisz pobrać i zainstalować nowego Microsoft find. Następnie możesz użyć tego findnarzędzia. Lub zainstaluj findpolecenie Cygwin, takie jak @arcyqwerty (które prawdopodobnie będzie miało lepszą obsługę długoterminową).
Trevor Boyd Smith
2
Może również korzystać z wbudowanego fsutil hardlink list filename. (patrz odpowiedź Siergieja )
Svish
28

W systemie Windows 7 użyj polecenia:

fsutil hardlink list MyFileName.txt

Zawiera listę wszystkich dowiązań twardych do pliku o nazwie MyFileName.txt.

Siergiej
źródło
Pamiętaj, że musisz być administratorem, aby uruchomić fsutil.
Alastair Maw
2
@AlastairMaw Co najmniej w systemie Windows 10 nie trzeba być administratorem, aby uruchomić to polecenie. A może działa bez administratora konta UAC? (czyli tylko grupa bez faktycznego podniesienia)
Paul Stelian
9

Niestety, nie ma sposobu, aby system operacyjny znalazł wszystkie linki twarde bez patrzenia na każdy plik.

W przypadku Eksploratora możesz pobrać bardzo przydatne rozszerzenie powłoki powłoki , które nakłada pliki z linkami twardymi za pomocą czerwonej strzałki przypominającej skrót.

Ułatwia także tworzenie linków twardych, dowiązań symbolicznych i skrzyżowań za pomocą menu kontekstowego Eksploratora.

Dodatkowe rozmowy

Technicznie wszystkie pliki są dowiązaniami stałymi. Tak więc naprawdę szukasz plików z więcej niż jednym dowiązaniem twardym.

surfasb
źródło
1
Właściwie to jest. Zobacz odpowiedź Siergieja .
Svish
1
Odpowiedź Siergieja działa na drugą część pytania, ale nie na pierwszą.
surfasb
3

użyj finddupe :

finddupe -listlink c:\photos
eadmaster
źródło
-listlink Ustawia finddupe w trybie wyszukiwania hardlink. W tym trybie finddupe wyświetli listę grup plików połączonych na stałe. Wszystkie znalezione na stałe instancje pliku są wyświetlane razem. Jednak finddupe może znaleźć tylko instancje pliku dowiązanego, które znajdują się w ścieżce wyszukiwania.
Shayan
3

 Prosty sposób na jednorazowe sprawdzenie: czy atrybuty plików zmieniają się razem?

Jeśli chcesz sprawdzić, czy pliki Ai Btwarde linki do tej samej zawartości nie chcesz instalować ani uruchamiać, otwórz okno Właściwości pliku Ai przełącz na przykład jego atrybut Tylko do odczytu . Teraz otwórz okno Właściwości pliku, Baby zobaczyć, czy zmiana atrybutu (pliku A) miała również miejsce tutaj. Jeśli tak, to odpowiedź jest pozytywna.

Dlaczego to działa? Ponieważ powiązane twarde łącza mają ten sam zestaw atrybutów plików i znaczników czasu.

To powiedziawszy, ten sam test można wykonać ze znacznikami czasu plików, ale nie można ich zmienić tak łatwo jak flagę Tylko do odczytu w celu przeprowadzenia kontroli.

miroxlav
źródło