Как я могу найти жесткие ссылки в Windows?

33

Я создал несколько жестких ссылок в моей файловой системе Windows 7, используя mklink. Это было некоторое время назад, и я не могу точно вспомнить, где и какие файлы. Когда я использую Проводник, все файлы выглядят одинаково. Когда я использую командную строку и набираю «dir», они все выглядят одинаково.

Как мне найти жесткие ссылки? Или как определить, является ли конкретный файл жесткой ссылкой?

ММ.
источник

Ответы:

33

Все файлы являются жесткими ссылками, с количеством ссылок не менее 1.

Вот почему файлы выглядят одинаково. Они являются одинаковыми. То, что вы, похоже, ищете, это файлы, в которых есть более одной ссылки на файл. Очень мало, что отличает файл с числом ссылок больше единицы от файла с числом ссылок один… кроме количества ссылок (и некоторого странного поведения в отношении атрибутов и отметок даты).

И это очень легко проверить с помощью findкоманды, входящей в состав служебного инструментария Microsoft SFUA , который работает в подсистеме для приложений на основе Unix. :

находить . -ссылки +1

JdeBP
источник
9
Как примечание, cygwin / bin / find также работает. Благодарность!
arcyqwerty
6
Просто чтобы прояснить, что «Microsoft find», на которую ссылается данное решение, не является установленной по умолчанию Windows 7. Вам необходимо скачать и установить новую Microsoft find. Тогда вы можете использовать эту findутилиту. Или установите findкоманду Cygwin, например @arcyqwerty (которая, вероятно, будет иметь лучшую поддержку в долгосрочной перспективе).
Тревор Бойд Смит
2
Можно также использовать встроенный fsutil hardlink list filename. (см ответ Сергея )
Svish
28

В Windows 7 используйте команду:

fsutil hardlink list MyFileName.txt

В нем перечислены все жесткие ссылки на файл с именем MyFileName.txt.

Сергей
источник
Обратите внимание, что для запуска fsutil вам необходимо быть администратором.
Аластер Мо
2
@AlastairMaw По крайней мере, в Windows 10 вам не нужно быть администратором для запуска этой конкретной команды. Или это работает, чтобы быть администратором без UAC? (то есть просто группа без фактического повышения)
Пол Стелян
9

К сожалению, ОС не может найти все ваши жесткие ссылки, не просматривая каждый файл.

Для Explorer вы можете загрузить очень удобное расширение Link Shell , которое накладывает на файлы жесткие ссылки красной стрелкой, похожей на ярлык.

Это также делает довольно легким создание жестких ссылок, символических ссылок и соединений через контекстное меню Проводника.

Бонус болтовни:

Технически все файлы являются жесткими ссылками. Таким образом, вы действительно ищете файлы с более чем одной жесткой ссылкой.

surfasb
источник
1
На самом деле, это так. Смотри ответ Сергея .
Svish
1
Ответ Сергея работает для второй части вопроса, но не для первой.
surfasb
3

используйте finddupe :

finddupe -listlink c:\photos
eadmaster
источник
-listlink Переводит finddupe в режим поиска жестких ссылок. В этом режиме finddupe покажет, какие группы файлов жестко связаны между собой. Все найденные в файле экземпляры с жесткими ссылками отображаются вместе. Однако finddupe может найти только те экземпляры файла с жесткими ссылками, которые находятся в пути поиска.
Шаян
3

 Простой способ для одноразовых проверок: меняются ли атрибуты файла вместе?

Если вы хотите проверить , имеет ли файлы Aи Bявляются жесткими ссылками на то же содержание , и вы не хотите , чтобы установить или запустить что - нибудь, откройте Свойство окно файла Aи тумблера, например , его только для чтения атрибута. Теперь откройте окно свойств файла, Bчтобы увидеть, есть ли изменение атрибута (файлаA ). Если да, то ответ положительный.

Почему это работает? Потому что связанные жесткие ссылки имеют одинаковый набор атрибутов файла и отметок времени.

Это сказало, что тот же самый тест может быть сделан с отметками времени файлов, но они не могут быть изменены так же легко как флаг Только для чтения , чтобы выполнить проверку.

miroxlav
источник