Как найти все символическае ссылки и точки соединения в Windows
Современные операционные системы поддерживает ссылки на файлы и папки, которые позволяют получить к ним доступ, не делая копии содержимого. Используемая по умолчанию в Windows файловая система NTFS поддерживает три типа ссылок: жесткие ссылки (Hard Links), точки соединения (Junctions) и символическая ссылки (Symbolic Links).
- Жесткая ссылка (Hard Links) может быть сделана только на файлы. Фактически это дополнительная ссылка на файл в файловой системе с такими же свойствами, только не занимающая место на диске. При изменении содержимого файла, все приложения, которые используют ссылки для доступу к нему, видят изменения. Они не поддерживают UNC пути для доступа к сетевым ресурсам, путь которых начинается с «\\». Была добавлена в Windows NT4.
- Точка соединение (Junctions) это мягкая ссылка к локальной папке на компьютере. Она создает видимость существования папке в месте создания ссылки, скрывая путь к исходной папке. К точке соединения нельзя обратиться, используя сетевые UNC пути которые начинаются «\\». Был добелена в Windows 2000.
- Символическая ссылка (Symbolic Links) это мягкая ссылка, которая фактически представляет из себя ярлык. Ярлык может ссылаться на файл, папку, сетевой файл или папку, и даже общий ресурс в сети. В ссылке можно использовать сетевые пути UNC которые начинаются с «\\». Была добавлена в Windows Vista.
При удалении файлов в папке в точке соединения или по символической ссылке, он будет уделен в исходной папке. При удалении точки соединения или символической ссылке, будет удалена только ссылки или точка соединения, а исходная папка и файлы останутся на месте. В случает с жесткой ссылки ситуация более интересная. По факту исходный файл это та же жесткая ссылка на раздел диска в котором храниться информация. Для удаления файла нужно удалить все жесткие ссылки, в том числе исходный файл. Если удалить исходный файл на который есть жесткие ссылки, он не будет удален.
Получение списка символических ссылок и точек соединения
1. Запускаем командую строку от имени администратора. Для этого зажимаем сочетание клавиш «Win + R». В открывшемся окне вводим «cmd», зажав клавиши «Shift + Ctrl» нажимаем кнопку «OK».
2. Вводим командную строку
DIR /AL /S «C:\Users»
Где «C:\Users», это папка, для которой будет выведен список символических ссылок и точек соединения. Вместо этого вводим нужную папку или диск. Путь к папке берем в кавычки, на случай если в названии используются пробелы.
Чтоб список символических ссылок и точек соединения был сохранен в текстовый файл, вводим.
DIR /AL /S «C:\» or DIR /AL /S «C:\» > «%UserProfile%\Desktop\Links.txt»
Где «%UserProfile%\Desktop\Links.txt» это путь и название файла со списком ссылок. В нашем случае файл с названием Links.txt сохраниться на рабочем столе.
3. После вывода команды будет выведен список папок, в которых есть символические ссылки на файлы и папки, и точки соединения, с названием файла/папки и путем к его источнику. Различить их можно по типам (1):
- <JUNCTION> — точка соединения на файл
- <SYMLINK> — символическая ссылка на файл
- <SYMLINKD> — символическая ссылка на папку
В крайней левой строке правая часть символическая ссылка (2), а в квадратных скобках (3) файл или папка источник.
4. Если нужны только символические ссылки вводим
dir /AL /S «C:\Users» | find «SYMLINK»
Если нужны только точка соединения вводим
dir /AL /S «C:\Users» | find «JUNCTION»
Где «C:\Users», это путь к папке о которой нужно получить информацию.
Для того чтоб список символических ссылок был сохранен в файл вводим
dir /AL /S «C:\Users» | find «SYMLINK» > «%UserProfile%\Desktop\Links.txt»
Для того чтоб список точек соединения был сохранен в файл вводим
dir /AL /S «C:\Users» | find «JUNCTION»> «%UserProfile%\Desktop\Links.txt»
Где «%UserProfile%\Desktop\Links.txt» это путь и название файла в который будет сохранен список, в данном случае файл под названием Links.txt будет создан на рабочем столе.
Получение списка жестких ссылок
1. Запускаем командую строку. Для этого нажимаем быстрые клавиши «Win + R». В окне которое откроется, вводи «cmd» и нажимаем кнопку «OK».
2. Переходим в папку, для которой хотим получить список жестких ссылок. Для этого вводим
CD «C:\Test»
Где «C:\Test», это путь к нужной папке.
3. Вводим в командную строку
echo off & for /F «delims=» %A in (‘dir /s /b’) do echo. & fsutil hardlink list «%A»?
Чтоб список жестких ссылок был сохранен в файл вводим
echo off & for /F «delims=» %A in (‘dir /s /b’) do echo. & fsutil hardlink list «%A» > «%UserProfile%\Desktop\HardLinks.txt»
Где «%UserProfile%\Desktop\HardLinks.txt» это путь и название файла. В примере создается файл на рабочем столе HardLinks.txt
4. В списке с файлами если название файла окружено пустыми строками (1), то это обычный файл на который можно не обращать внимание. Если название файлов находиться в двух соседних строках это жесткие ссылки на файл.