This tutorial will show you how to find and list all hard links, symbolic links, and junction points and their target source in Windows 10 and Windows 11.
There are three types of file links supported in the NTFS file system: hard links, junctions, and symbolic links. Otherwise known as Reparse Points.
Hard Links can only be created for files. Any changes to that file are instantly visible to applications that access it through the hard links that reference it. Hard links do not support UNC paths (network paths that begin with \\). Hard links to a file will not have a shortcut arrow icon on them.
Symbolic Links are soft links that are basically advanced shortcuts. You can create a symbolic link to a local or remote file, folder, or shares path, and that link will appear to be the same as the target source. Symbolic links do support UNC paths (network paths that begin with \\). When you open a symbolic link, you will be redirected to the target source. Symbolic links will have a shortcut arrow icon on them.
Junctions (Directory Junction) are soft links that can only be created to a local folder (directory) path. Junction points make it appear as though folder (directory) actually exists at the location of the junction point, and your app won’t know any better. Junction points do not support UNC paths (network paths that begin with \\). Junction points will have a shortcut arrow icon on them.
Deleting anything in the link/junction or target (source) folder will delete it in both folders.
Deleting the hard link, symbolic link, or junction point itself will not delete anything in the target (source) folder.
Contents
- Option One: Find All Symbolic Links and Junction Points
- Option Two: Find All Hard Links
Option One
Find All Symbolic Links and Junction Points
1 Open a command prompt or elevated command prompt (recommended).
2 Type the command below you want to use into the command prompt, and press Enter. (see screenshot below)
(Output in command prompt)
DIR /AL /S "Directory Path"
OR
(Output to «Links.txt» file on desktop)
DIR /AL /S "Directory Path" > "%UserProfile%\Desktop\Links.txt"
Substitute Directory Path in the command above with the actual full path of the drive or folder you want to search in to find and list all symbolic links and junction points.
Folder example: DIR /AL /S "C:\Users\Brink\Downloads"
or DIR /AL /S "C:\Users\Brink\Downloads" > "%UserProfile%\Desktop\Links.txt"
Drive example: DIR /AL /S "C:\"
or DIR /AL /S "C:\" > "%UserProfile%\Desktop\Links.txt"
3 You will now see a Directory of <path> listed for each folder symbolic links and/or junction points were found in. Under this path you will see the link file/folder name and its target source path.
Types of links:
- <JUNCTION> = Junction point to folder (directory)
- <SYMLINK> = Symbolic link to file
- <SYMLINKD> = Symbolic link to folder (directory)
Option Two
Find All Hard Links
1 Open a command prompt or elevated command prompt (recommended).
2 Type the command below into the command prompt, and press Enter. (see screenshot below)
CD "Directory Path"
Substitute Directory Path in the command above with the actual full path of the drive or folder you want to search in to find and list all hard links.
Folder example: CD "C:\Users\Brink\Downloads"
3 Copy and paste the command below into the command prompt, and press Enter. (see screenshot below)
(Output in command prompt)
echo off & for /F "delims=" %A in ('dir /s /b') do echo. & fsutil hardlink list "%A"
OR
(Output to «HardLinks.txt» file on desktop)
echo off & for /F "delims=" %A in ('dir /s /b') do echo. & fsutil hardlink list "%A" > "%UserProfile%\Desktop\HardLinks.txt"
4 You will now see a list of full paths for all files found in the directory from step 2.
- A single isolated line means the it’s a normal file. You can ignore this.
- Two lines together means it’s a hard link. The top path will be for the hard link, and the bottom path will be for it’s target source.
That’s it,
Shawn Brink
Символическая ссылка (симлинк, символьная ссылка, Symbolic link) это специальный файл на файловой системе, которые сам не содержит данных, а является по сути ярлыком, указывающим на какой-то другой объект (файл или папку). При обращении к симлику операционная система считает, что это оригинальный файл (папка) и работает с ними совершенно прозрачно.
Символические ссылки используются в Windows довольно часто для системных файлов и каталогов. Пользователь может их применять, когда нужно перенести часть “тяжелых” файлов на другой диск, но чтобы Windows считала, что файлы все еще находятся в исходном каталоге (например в ситуациях, когда нужно экономить место на SSD, перенеся некоторые каталоги на более медленный и емкий SSD, не нарушая работоспособности программ). Можно использовать симлинки на SMB файловом сервере, когда каталоги с разных LUN должны быть доступны через одну точку входа.
В Windows есть три типа файловых ссылок для NTFS томов: жесткие, мягкие (симлинки), точки соединения (Junction point).
- Hard Links (жесткие ссылки) – могут указывать только на локальный файл, но не на папку. Такой файл – это ссылка на другой файла на этом же диске без фактического дублирования самого файла. У него отображается такой же размер и свойства, как у целевого файла (но реальное место на диске он не занимает);
- Junction Points (Directory Hard Link, точка соединения) – могут указывать только на папку (на этом же или на другом разделе);
- Symbolic Links (мягкая ссылка, симлинк) – могут указывать на локальный файл, папку и сетевой каталог на удаленном компьютере (UNC), поддерживаются относительные пути.
В подавляющем большинстве случаев вам будет достаточно функционала symbolic link, как наиболее универсального средства создания ссылки на любой объект.
Как создать символическую ссылку в Windows?
Для создания символических и жестких ссылок в Windows можно использовать встроенную утилиты mklink или PowerShell.
Синтаксис у утилиты
mklink
простой. Чтобы создать символическую ссылку на файл, нужно указать имя ссылки и целевой объект, на который она должна указывать. Можно указать тип ссылки:
/D
— символьная (мягкая) ссылка на каталог,
/H
— жесткая ссылка,
/J
– точка соединения (Junction point).
Чтобы использовать mklinkдля создания символических ссылок нужно запустить командную строку с правами администратора. Иначе при запуске команды появится ошибка “
You do not have sufficient privilege to perform this operation
”.
Если вам нужно разрешить создавать символические ссылки обычным пользователям, нужно добавить группу пользователей в параметр групповой политики Create Symbolic Links (Computer configuration -> Window Settings -> Security settings -> User Rights Assignment в редакторе GPO). По умолчанию в этой политике добавлена только локальная группа «Administrators». Обновите локальные политики после изменения параметра: gpupdate /force
Создадим в каталоге C:\PS символическую ссылку на файл notepad.exe:
mklink C:\PS\note.exe c:\Windows\System32\notepad.exe
Должно появится сообщение:
symbolic link created for C:\PS\note.exe <<===>> c:\Windows\System32\notepad.exe
Теперь для запуска процесса notepad.exe можно использовать символическую ссылку note.exe.
Теперь создадим в этом каталоге симлинк на другой каталог на этом же диcке:
mklink /D “C:\PS\Downloads” “C:\Users\user\Downloads”
Теперь при переходе в каталог C:\PS\Downloads вы будете видеть содержимое каталога, на который он ссылается.
Выведем содержимое каталога C:\PS:
Dir c:\ps
Как вы видите, в атрибутах некоторых файлов указано, что это symlink/simlinkd. Также указан объект, на который они ссылаются. В Windows File Explorer симлинки отображаются с иконками ярлыков, а в их свойствах можно посмотреть целевой объект на который они ссылаются.
Также можно создать символически ссылки в Windows 10 с помощью PowerShell (в этом примере я использую относительные пути, чтобы создать символическую ссылку):
New-Item -ItemType SymbolicLink -Path ".\test\tmpfiles" -Target "..\tmp\files"
Можно создать символическую ссылку на сетевую папку на удаленном компьютере/сервере. Адрес сетевой папки нужно указывать в формате UNC. Следующий пример создаст симлинк на сетевой каталог на сервере:
mklink /D c:\ps\share \\mskfs01\Share
Например, подключим административную шару C$ с удаленного компьютера по IP адресу:
mklink /D c:\remotePC\server1 \\192.168.31.15\С$
Если при доступе к сетевой папке через симлинк, вы получили ошибку
The symbolic link cannot be followed because its type is disabled
проверьте разрешенные способы использования символических ссылок на вашем компьютере:
fsutil behavior query SymlinkEvaluation
Local to local symbolic links are enabled. Local to remote symbolic links are enabled. Remote to local symbolic links are disabled. Remote to remote symbolic links are disabled.
Чтобы включить использование символических ссылок на удаленные ресурсы, выполните команды:
fsutil behavior set SymlinkEvaluation R2R:1
fsutil behavior set SymlinkEvaluation R2L:1
Вы можете работать с символическими ссылками, как с обычными объектами файловой системы, можно переименовать, переносить или удалить их. Система автоматически изменит настройки таких симлинков, чтобы они указывали на верные целевые объекты.
Для удаления симлинков используются обычные команды, как и для удаления файлов:
Del c:\ps\note.exe
RD c:\ps\downloads
Как найти и вывести все символические ссылки на диске?
В Windows нет простых инструментов для просмотра и управления всеми симлинками на диске.
Вы можете вывести список всех символических ссылок на диске с помощью команды:
dir /AL /S C:\ | find "SYMLINK"
-
/A
– вывести файлы с атрибутом L (симлинк); -
/S
–выполнить команду рекурсивно для всех вложенных каталогов; -
C:\
— укажите имя диска, на котором нужно найти все символические ссылки (если вы не хотите сканировать весь диск, укажите путь к нужному каталогу)
Также можно вывести список всех символических ссылок на диске с помощью PowerShell. Для этого нужно просканировать все каталоги и найти NTFS объекты с атрибутом ReparsePoint:
Get-ChildItem -Path C:\ -Force -Recurse -ErrorAction 'silentlycontinue' | Where { $_.Attributes -match "ReparsePoint"}
Sign in to your How-To Geek account
Quick Links
-
How to View a List of Symbolic Links
Symbolic Links (Symlinks) are essentially shortcuts to another file or folder. If you are using a lot of symbolic links, you may want to quickly render a complete list of them for reference. Here’s how.
What Are Symbolic Links?
Symbolic links are reference points for other files and folders. Imagine copying and pasting a file or folder, but instead of duplicating that content, it just links back to the source file or folder and opens it when accessed. This saves a lot of valuable storage space, and can also streamline workflows in certain situations.
There are two types of symbolic links you need to know about: Hard symlinks and soft symlinks. Both reference a specified file or folder, but when a soft symlink is accessed, the system redirects you to where the file or folder lives, whereas hard links make the system think the symlink is the actual file or folder.
How to View a List of Symbolic Links
You can view a list of symbolic links by running a command in Command Prompt. Open Command Prompt by clicking the Search icon in the Windows taskbar, typing «Command Prompt» in the Search box, and then clicking «Command Prompt» in the search results.
In Command Prompt, run this command:
dir /AL /S c:\
A list of all of the symbolic links in the c:\ directory will be returned. You can change the directory by replacing c:\
with whichever directory you want to get a list of symbolic links from. For example, if you wanted to get a list of symlinks in the d:\ directory, you would run:
dir /AL /S d:\
That’s all there is to it.
If you’re viewing a list of symbolic links on your PC, then you probably already know how to create and use them, as well. But this isn’t a Windows-only feature—you can also use create and use them on Mac or Linux.
Жесткие и символические ссылки давно знакомы и активно используются Linux-администраторами, в то время как их Windows коллеги используют их гораздо реже, а некоторые вообще не знают о такой возможности. Тем не менее такая возможность в Windows существует и позволяет значительно упростить некоторые сценарии работы с папками и файлами. В данной статье мы рассмотрим все виды ссылок, доступные в среде ОС Windows, а также разные способы работы с ними, начиная от командной строки и заканчивая PowerShell.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Жесткие ссылки (HardLink)
Жесткие ссылки представляют собой дополнительную запись в файловой таблице раздела для существующего файла. Таким образом жесткая ссылка ничем не отличается от исходного файла, но файл при этом не копируется физически и остается на диске в единственном экземпляре. При изменении файла по любой из жестких ссылок, остальные обновляются автоматически (что логично, так как файл один).
Мы можем переименовывать, копировать, перемещать (в пределах логического тома) ссылки — размер занимаемого места при этом не изменится. При удалении ссылок файл продолжает существовать до тех пор, пока не будет удалена последняя жесткая ссылка на него. Фактически отличить, где находится оригинальный файл, а где жесткая ссылка невозможно, по сути, файл на разделе это и есть жесткая ссылка.
Жесткая ссылка может существовать только в пределах логического тома, поддерживается файловыми системами NTFS и ReFS начиная со сборки 19536.
Для создания жесткой ссылки можно воспользоваться утилитой mklink:
mklink /H C:\Folder1\LinkFileName C:\Folder\FileName
Где ключ /H предписывает создать именно жесткую ссылку, далее следует путь к новому файлу и целевому файлу, на который мы делаем ссылку. Путь можно указывать как абсолютные, так и относительные, в имени создаваемого файла не забывайте указывать расширение.
Ссылки можно создавать и при помощи PowerShell, для этого воспользуйтесь командой:
New-Item -ItemType HardLink -Path C:\Folder1\LinkFileName -Target C:\Folder\FileName
Команда другая, но принцип тот же самый: -ItemType — тип создаваемой ссылки, в нашем случае жесткая ссылка, -Path — путь к создаваемому файлу ссылки, -Target — файл на который мы делаем ссылку.
Можно ли сделать жесткую ссылку на директорию? Нет, только на файлы.
Вроде бы все понятно, но если внимательный читатель заглянет в свойства папки с жесткой ссылкой, то он увидит, что ее размер равен исходному файлу, если сделаем в ней еще одну жесткую ссылку — двум исходным файлам. Как так? Не стоит переживать, все нормально. Для операционной системы жесткая ссылка ничем не отличается от обычного файла и при подсчете свободного места учитывается размер каждой ссылки, но на самом деле на диске хранится единственная копия. В этом можно убедиться, если одновременно с созданием жестких ссылок контролировать свободное место на диске.
При желании мы можем провернуть даже такой фокус:
Какой вывод можно сделать из того, что мы увидели и где нам могут пригодиться жесткие ссылки? Прежде всего для предоставления пользователям доступа к объемным архивам, образам или инсталляционным пакетам. Скажем у вас есть файловый сервер и несколько отделов, каждому из которых нужно предоставить доступ к одному и тому же большому файлу. При этом вы можете не бояться, что кто-то удалит файл, он удалит его только у себя в директории, для остальных пользователей он останется доступен.
Но при этом надо очень внимательно относиться к вопросу одновременного редактирования файла, так как он существует в единственном экземпляре, но доступен по множеству ссылок в этом сценарии могут возникнуть самые разные коллизии.
Точки соединения (Junction)
Очень старая технология, поддерживаемая еще начиная с Windows 2000, позволяет сделать один из каталогов псевдонимом другого каталога. Чем-то напоминает символические ссылки, но в крайне упрощенном варианте. В качестве цели можно использовать только локальные папки, но при этом нет ограничения по размещению их на одном томе. Т.е. целевая папка может находиться на диске C:, а точка соединения для нее на диске D: и все будет работать. Точки соединения поддерживаются файловыми системами NTFS и ReFS.
Для создания точки соединения можно использовать mklink:
mklink /J D:\LinkFolder C:\Folder
Ключ /J указывает на создание точки соединения, далее следует папка каталога-псевдонима и папка целевого каталога. При любом изменении целевого каталога (перемещение, переименование, удаление) точка соединения перестает работать.
Обратите внимание, что данная папка в проводнике отображается как ярлык, а выводе команды dir как точка соединения.
Это же действие в PowerShell:
New-Item -ItemType Junction -Path D:\LinkFolder -Target C:\Folder
Комментировать здесь особо нечего, краткость не входит в число добродетелей PowerShell, но не оставляет места догадкам, все просто и понятно.
Зачем сейчас нужны точки соединения? После появления в NT 6.0 настоящих символических ссылок не нужны, но вы можете встретиться с ними как в устаревших системах, так и в современных, где они могут присутствовать в виде наследия. Поэтому знать о них и уметь с ними работать современному администратору надо.
Символические ссылки (SymbolicLink)
Пожалуй, самый популярный вид связи, позволяет создавать множество псевдонимов для файлов или каталогов размещая их на любых поддерживаемых локальных файловых системах. В качестве цели могут быть использованы как локальные, так и сетевые объекты. При создании символической ссылки можно использовать как абсолютные, так и относительные пути. Но в последнем случае вы не можете перемещать ссылку — она перестанет работать. Символические ссылки поддерживаются начиная с NT 6.0 (Vista и Server 2008) и работают с файловыми системами NTFS и ReFS.
Для создания символических ссылок можно использовать mklink, без параметров она создает симлинк для файла:
mklink C:\Folder1\LinkFileName C:\Folder\FileName
При создании ссылки не забываем указать расширения для файла. Как и в случае с точкой соединения символическая ссылка отображается в виде ярлыка и обозначается в выводе команды dir:
Для создания символической ссылки на директорию добавьте ключ /D:
mklink /D D:\LinkFolder C:\Folder
В PowerShell все проще, тип объекта будет определен автоматически:
New-Item -ItemType SymbolicLink -Path C:\Folder1\LinkFileName -Target C:\Folder\FileName
Если в качестве цели указан файл — будет создана ссылка на файл, каталог — ссылка на каталог.
При переименовании, перемещении или удалении исходного файла или каталога все символические ссылки работать перестанут:
При копировании символической ссылки за пределы локального тома будет скопирован исходный файл, даже если целевой том поддерживает работу со ссылками, но это не мешает создать новую ссылку на другом томе.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе «Архитектура современных компьютерных сетей» вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Главная
> Как это сделать > Как посмотреть список символьных ссылок на диске в Windows
Операционные системы Windows поддерживают специфический тип ярлыков ссылающихся на файлы и папки, который ведут себя как настоящие файлы и папки, только могут находиться на другом диске или другой в директории, не занимая места. Если простыми словами, представьте, что вы копирует файл, только он не дублируется, а создается на него ссылка.
Чтоб получить список всех символьных ссылок на диске необходимо:
1. Жмем на иконке поиска в панели задачи и вводим «Командная строка». Находим одноименное приложение, оно должно быть первым в списке, и запускаем его.
2. Вводим в командную строку «dir /AL /S C:\» и жмем ввод. После чего вы увидите список всех символьных ссылок выбранного диска. Где «C:\» это буква диска, на котором вы хотите увидеть символьные ссылки. Если вас интересуют символьные ссылки на диске D, то вы должны ввести «dir /AL /S D:\».
Если вам не нужен список всех символьных ссылок на диске, который может быть очень большим, то можно указать, в какой папке искать их. Например, если интересует папка Users на диске C, то нужно ввести «dir /AL /S C:\Users».
Как создавать символьные ссылки на файлы и папки детально описано в «Как создать символьную ссылку в Windows».