- Как создать символьную ссылку в Windows 10, 8.1, 8, 7
- Использование символических ссылок в Windows
- Как создать символическую ссылку в Windows?
- Как найти и вывести все символические ссылки на диске?
- Symbolic Links, Hard Links and Directory Junctions in Windows 10
- About Sergey Tkachenko
- 12 thoughts on “ Symbolic Links, Hard Links and Directory Junctions in Windows 10 ”
Как создать символьную ссылку в Windows 10, 8.1, 8, 7
Товарищи, добрый день. Хотя эта тема и не самая популярная, но она мне очень много раз выручала, поэтому я не могу о ней не написать. Итак, что значит термин «символьная ссылка» я возьму из энциклопедии Wikipedia:
Символьная ссылка (также симлинк от англ. Symbolic link, символическая ссылка) — специальный файл в файловой системе, для которого не формируются никакие данные, кроме одной текстовой строки с указателем. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Символьная ссылка занимает ровно столько места в файловой системе, сколько требуется для записи её содержимого (нормальный файл занимает как минимум один блок раздела).
По своей сути же, симлинк — это ярлык, который позволяет системе думать, что это не ярлык, а настоящий файл (или папка). К примеру, частое применение символьной ссылок для папок — это установка игры на SSD, с последующем переносом файлов графики на жесткий диск, с целью экономия места на SSD и создание символьной ссылки до исходного места. Игра будет думать, что все файлы находятся в исходной папке. Так же символьные ссылки можно применять когда используются одинаковые файлы в нескольких каталогах, чтобы не вносить правки во все файлы, можно создать с одного файла символьные ссылки и вносить изменения один раз.
Создать символьную ссылку очень просто и сейчас я вам это докажу. Открываем командную строку, нажимаем Win+R, вводим cmd и жмём ОК. Хотя если вы собираетесь работать с системными файлами, может понадобиться командная строка с правами администратора.
Дальше нам нужно ввести команду для создания символьной ссылки, выглядит она следующем образом:
где /j — атрибут создания соединения для каталога. Если вы создаете ссылку на файл, атрибут ставить не надо.
К примеру, если я хочу создать символьную ссылку на папку mklink на локальном диске E, как папку mk на диске С, мне нужно ввести следующую команду (и да, символьная ссылка может называться не так, как исходный файл (папка):
В результате мы получим вот это.
Если же мы хотим создать символьную ссылку на файл, например на файл 1.txt, хранящийся в корне диска E. для использования в виде файла 2.txt. скажем в папке mslink на диске C, команда будет выглядеть вот так:
А на выходе получим вот это.
Резюмируя скажу, что знание возможностей данной функции, открывает большие возможности. С помощью неё я выходил из нескольких ситуаций, когда не хватало свободного пространства, на моем старом SSD, позволяя быстро перенести игру из папки origin на другой диск. Но вариантов использования её гораздо больше, к примеру перенос кэша браузеров, о котором мы поговорим в одной из будущих статей.
Вроде всё. Надеюсь эта статья оказалась вам полезной, обязательно нажмите одну из кнопок ниже, чтобы рассказать о ней друзьям. Также подпишитесь на обновления сайта, введя свой e-mail в поле справа или подписавшись на группу во Вконтакте и канал YouTube.
Спасибо за внимание
Использование символических ссылок в Windows
Символическая ссылка (симлинк, символьная ссылка, 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).
Если вам нужно разрешить создавать символические ссылки обычным пользователям, нужно добавить группу пользователей в параметр групповой политики 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
Должно появится сообщение:
Теперь для запуска процесса notepad.exe можно использовать символическую ссылку note.exe.
Теперь создадим в этом каталоге симлинк на другой каталог на этом же диcке:
mklink /D “C:\PS\Downloads” “C:\Users\user\Downloads”
Теперь при переходе в каталог C:\PS\Downloads вы будете видеть содержимое каталога, на который он ссылается.
Выведем содержимое каталога 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\С$
Если при доступе к сетевой папке через симлинк, вы получили ошибку
проверьте разрешенные способы использования символических ссылок на вашем компьютере:
fsutil behavior query SymlinkEvaluation
Чтобы включить использование символических ссылок на удаленные ресурсы, выполните команды:
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
Symbolic Links, Hard Links and Directory Junctions in Windows 10
In Windows 10, you can using symbolic links to easily redirect one folder to another location. Symbolic links are widely used in the operating system for its own files and folders. Using symbolic links, you can save your disk space and make your data accessible from various file system locations without physically moving your data.
By symlinking these two folders I got everything working within a few seconds. I created symbolic links named c:\portable and c:\documents without moving a single file or folder. Another interesting thing is that if I move my symbolic links to some other location, for example, to the E: drive, they continue to work and will point to my folders on the D: drive.
Here is how symbolic links can be created.
For symbolic link management, Windows offers you many ways.
The most famous tool is mklink. It has the following syntax (mklink /?):
/D — Creates a directory symbolic link. Default is a file symbolic link.
/H — Creates a hard link instead of a symbolic link.
/J — Creates a Directory Junction.
Link — Specifies the new symbolic link name.
Target — Specifies the path (relative or absolute) that the new link refers to.
Now you may wonder what is the difference between a directory symbolic link and a directory junction.
What is the difference between a directory symbolic link and a directory junction
A Directory Junction is an older type of symbolic link, which does not support UNC paths (network paths that begin with \\) and relative paths. Directory junctions are supported in Windows 2000 and later NT-based Windows systems. A directory symbolic link on the other hand also supports UNC and relative paths. However, they require at least Windows Vista. So, in most cases today, the directory symbolic link is the preferred option.
What is the difference between a hard link and a symbolic link
A hard link can be created only for files, not folders. You cannot create a hard link for directories. So, it has more limitations than a Directory Junction and also does not support UNC paths.
How to see if a file or a folder is a symbolic link
Let’s create all three types of symbolic links and see how they will be displayed in the operating system.
I will create the folder Winaero on my desktop and the text file Winaero.txt in the same location.
Then, I will create a new symbolic link and a new Directory Junction for the folder and the text file.
The mklink command requires Administrator privileges, so you need to run it from an elevated command prompt.
The following command will create a new directory symbolic link:
A directory symbolic link can be visually identified by the shortcut overlay icon added to its main icon:
Additionally, when you have enabled the «Attributes» column in the Details view of File Explorer, you will see the «L» attribute which indicates that it is a symbolic link.
Now, let’s create a new directory junction for the Winaero folder, as follows:
It has no visual difference from a directory symbolic link in File Explorer, so you cannot tell if it is a directory junction or a directory symbolic link:
The only way to find the type of the link is to use the console dir command. Open a new command prompt window in the folder which contains your link and run the dir command. See the output:
Now, let’s create a symbolic link for the text file I created. The command is as follows:
Again, it is not visually different from a regular shortcut file, besides the attributes column value and the «symlink» item type:
The situation is different for hard links. Let’s create one:
The hard link has no visual difference from a regular file when displayed in File Explorer:
The only way to ensure that the file is a hard link is to use another console utility, fsutil.
Run it as follows :
The mentioned command shows all hardlinked files:
You cannot see if a file is a hard link easily because Explorer out of the box gives no such indication. They behave like regular files in a dir command’s output or in File Explorer.
However, hard links are still links to other files. They do not duplicate the target file’s content and do not take redundant disk space.
In Windows Vista and later, directory junctions are used to link older file folder paths like C:\Documents and Settings to newer paths like C:\Users. Symbolic links are also used to redirect C:\Users\All Users to C:\ProgramData.
Starting with Windows Vista, hard links are also widely utilized by Windows and its Servicing mechanism. Many system files are hard links to files inside the Windows Component Store folder. If you run the command fsutil hardlink list for explorer.exe, notepad.exe or regedit.exe, you can see this yourself!
The WinSxS folder stores various system files, which are linked via hard links to the files located in the folders C:\Windows, C:\Windows\System32 and other system folders. When operating system updates are installed, the files inside WinSxS are updated and hard linked to system locations again.
That’s it. Now you know everything you need to know about symbolic links in Windows 10. Using this information, you can resolve issues with paths when you add a new disk drive in your computer, or move some folder but still need it to be accessible via its previous path. Feel free to leave a comment if you have a question or have something to add.
Winaero greatly relies on your support. You can help the site keep bringing you interesting and useful content and software by using these options:
Share this post
About Sergey Tkachenko
Sergey Tkachenko is a software developer from Russia who started Winaero back in 2011. On this blog, Sergey is writing about everything connected to Microsoft, Windows and popular software. Follow him on Telegram, Twitter, and YouTube.
12 thoughts on “ Symbolic Links, Hard Links and Directory Junctions in Windows 10 ”
Thanks, Sergey, for useful article. Want to share, I’m using Link Shell Extension to create links. It integrates into system and provides different overlays for symlinks, hard links and junctions.
Link Shell Extension is deserving a separate review, which we had planned for today 🙂
Stay tuned.
There is no information in the post, how one cam delete sym/hard links properly, without deleting original files.
Also use of FAT32 and NTFS is not fully covered. On WinXP I use Junction by Mark Russinovich which works really good.
Otherwise good article.
Windows built-in tools do not support FAT32 symbolic links.
I am pretty sure that FAT32 does not support symlinks by design. Nor hard links or symbolic links.
The article title says “In Windows 10”.
What era are you living in? All reparse points are NTFS features only. No need to even bring up FAT32.
When you delete a symlink, the original file remain unaffected.
Unless you are using the del /s console command, which is designed to delete the linked content intentionally
Sergey, very good article! Thank you!
It would be excellent to add the function of creating symbolic links to WinaeroTweaker. Is it possible, or what do you thinks about this?
Well, it is possible I think.
I can add a GUI wrapper for this feature.
However, I don’t think that many users will use it.
I added it to my product back log.
Use Link Shell Extension, Luke.
Use Linkshell Extension to create Links. It adds a tab in properties, showing you the enumerations and adds an Entry in the Context Menu to Pick a Source and Drop as some kind of link at the location you want it. Makes life a whole lot better.
schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html
What steps should be taken to avoid vulnerabilities with symbolic links and OneDrive?