Символическая ссылка (симлинк, символьная ссылка, 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:PSnote.exe c:WindowsSystem32notepad.exe
Должно появится сообщение:
symbolic link created for C:PSnote.exe <<===>> c:WindowsSystem32notepad.exe
Теперь для запуска процесса notepad.exe можно использовать символическую ссылку note.exe.
Теперь создадим в этом каталоге симлинк на другой каталог на этом же диcке:
mklink /D “C:PSDownloads” “C:UsersuserDownloads”
Теперь при переходе в каталог C:PSDownloads вы будете видеть содержимое каталога, на который он ссылается.
Выведем содержимое каталога C:PS:
Dir c:ps
Как вы видите, в атрибутах некоторых файлов указано, что это symlink/simlinkd. Также указан объект, на который они ссылаются. В Windows File Explorer симлинки отображаются с иконками ярлыков, а в их свойствах можно посмотреть целевой объект на который они ссылаются.
Также можно создать символически ссылки в Windows 10 с помощью PowerShell (в этом примере я использую относительные пути, чтобы создать символическую ссылку):
New-Item -ItemType SymbolicLink -Path ".testtmpfiles" -Target "..tmpfiles"
Можно создать символическую ссылку на сетевую папку на удаленном компьютере/сервере. Адрес сетевой папки нужно указывать в формате UNC. Следующий пример создаст симлинк на сетевой каталог на сервере:
mklink /D c:psshare \mskfs01Share
Например, подключим административную шару C$ с удаленного компьютера по IP адресу:
mklink /D c:remotePCserver1 \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:psnote.exe
RD c:psdownloads
Как найти и вывести все символические ссылки на диске?
В 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"}
Товарищи, добрый день. Хотя эта тема и не самая популярная, но она мне очень много раз выручала, поэтому я не могу о ней не написать. Итак, что значит термин «символьная ссылка» я возьму из энциклопедии Wikipedia:
Символьная ссылка (также симлинк от англ. Symbolic link, символическая ссылка) — специальный файл в файловой системе, для которого не формируются никакие данные, кроме одной текстовой строки с указателем. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Символьная ссылка занимает ровно столько места в файловой системе, сколько требуется для записи её содержимого (нормальный файл занимает как минимум один блок раздела).
По своей сути же, симлинк — это ярлык, который позволяет системе думать, что это не ярлык, а настоящий файл (или папка). К примеру, частое применение символьной ссылок для папок — это установка игры на SSD, с последующем переносом файлов графики на жесткий диск, с целью экономия места на SSD и создание символьной ссылки до исходного места. Игра будет думать, что все файлы находятся в исходной папке. Так же символьные ссылки можно применять когда используются одинаковые файлы в нескольких каталогах, чтобы не вносить правки во все файлы, можно создать с одного файла символьные ссылки и вносить изменения один раз.
Создать символьную ссылку очень просто и сейчас я вам это докажу. Открываем командную строку, нажимаем Win+R, вводим cmd и жмём ОК. Хотя если вы собираетесь работать с системными файлами, может понадобиться командная строка с правами администратора.
Дальше нам нужно ввести команду для создания символьной ссылки, выглядит она следующем образом:
mklink /j "путь, где будет создана символьная ссылка" "путь, где находятся исходный файл или папка"
где /j — атрибут создания соединения для каталога. Если вы создаете ссылку на файл, атрибут ставить не надо.
К примеру, если я хочу создать символьную ссылку на папку mklink на локальном диске E, как папку mk на диске С, мне нужно ввести следующую команду (и да, символьная ссылка может называться не так, как исходный файл (папка):
mklink /j "C:mk" "E:mklink"
В результате мы получим вот это.
Если же мы хотим создать символьную ссылку на файл, например на файл 1.txt, хранящийся в корне диска E. для использования в виде файла 2.txt. скажем в папке mslink на диске C, команда будет выглядеть вот так:
mklink "C:mslink2.txt" "E:1.txt"
А на выходе получим вот это.
Резюмируя скажу, что знание возможностей данной функции, открывает большие возможности. С помощью неё я выходил из нескольких ситуаций, когда не хватало свободного пространства, на моем старом SSD, позволяя быстро перенести игру из папки origin на другой диск. Но вариантов использования её гораздо больше, к примеру перенос кэша браузеров, о котором мы поговорим в одной из будущих статей.
Вроде всё. Надеюсь эта статья оказалась вам полезной, обязательно нажмите одну из кнопок ниже, чтобы рассказать о ней друзьям. Также подпишитесь на обновления сайта, введя свой e-mail в поле справа или подписавшись на группу во Вконтакте и канал YouTube.
Спасибо за внимание
Материал сайта geekteam.pro
На чтение 3 мин Просмотров 116 Опубликовано 20.10.2021
Символьные ссылки или символические ссылки Символьная ссылка (также известная как мягкая ссылка) состоит из выбранного типа файла, который служит ссылкой на другой файл или каталог. Эта функция работает в Windows 10, Windows 8 и Windows 7. Вы можете использовать их в Dropbox, если не хотите перемещать папки, но хотите синхронизировать файлы. Давайте узнаем, как создавать симлинки в Windows 10.
Как создавать симлинки в Windows 10
1] Синтаксис командной строки для симлинка
Вы можете создавать симлинки с помощью утилиты командной строки под названием «MKLINK».
MKLINK [ /D] | [/H] | [/J] Цель ссылки
где [] означает необязательный параметр, а / используется как опция
- /D — Создать символическую ссылку на каталог (мягкую ссылку). По умолчанию создается символическая ссылка.
- /H — Создает жесткую ссылку (ссылка на файл).
- /J — Создает переход каталога
- LINK — Указывает имя новой символической ссылки
- Target — Указывает путь, на который будет ссылаться новая ссылка.
Пример создания символической ссылки на каталог
В командной строке сначала перейдите в нужный каталог. Затем (здесь я нахожусь в каталоге C)
- C: > mklink /D mySymDir D:MyBlogData
Приведенный выше пример делает все данные в каталоге «C» доступными в D:Myblogdata. Просто сделайтеDir в D:Myblogdata, и вы увидите все файлы каталога C.
Если вам неудобно использовать командную строку, есть несколько программ, которые вы можете использовать для создания.
2] Directory Linker
Это умное приложение с графическим интерфейсом, которое позволяет легко создавать символические ссылки с опциями копирования содержимого, удаления исходного каталога и подтверждения перезаписи.
Преимущество использования символических ссылок в том, что они прозрачны для пользователей; ссылки выглядят как обычные файлы или каталоги и могут быть использованы пользователем или приложением точно таким же образом. Поскольку они являются родными для файловой системы NTFS, пользователи Windows XP не имеют возможности создавать символические ссылки по технической причине. Скачать Directory Linker @ CodePlex
3] Symbolic Link Creator или Symlink Creator for Windows
Мы говорили о создании создателя символических ссылок с помощью Directory Linker. Вот еще один инструмент, который является более продвинутым и не имеет одной функции по сравнению с Directory Linker.
- Создание символических ссылок на файлы или папки
- Поддерживает создание Directory Junction наряду с симлинками и жесткими ссылками.
- Портативное приложение.
Скачайте его отсюда.
Однако, при использовании опции по умолчанию, вы сможете увидеть только один каталог или папку в созданной симлинке. Здесь мы рассмотрим, как сделать так, чтобы данные двух каталогов были доступны в одной симлинке.
4] Как сделать данные из двух папок доступными в одной
Возьмем директории d:Blogdata и d:Images. Теперь вы хотите видеть данные обеих директорий в новом месте, скажем d:Blog. Для этого мы используем опцию MKLINK /J. /J означает соединение каталогов.
Шаги для создания слияния директорий/симлинка
- MKLINK /D c:blog d:BlogData
- Вышеуказанные шаги создают жесткую ссылку, и все данные из директории D:blogdata будут видны в c:blog.
- Теперь введите MKLINK /J c:blog d:images
- Папка d:images будет добавлена к симлинку, который вы уже создали.
- Далее, когда вы будете просматривать c:blog, вы сможете увидеть данные обеих директорий.
Я предложу вам использовать функцию библиотеки.
Я надеюсь, что один из этих методов или программ облегчил создание символической или симлинковой ссылки в Windows 10 или Windows 8 или Windows 7. Если вы все еще на них, лучше обновиться.
Жесткие и символические ссылки давно знакомы и активно используются Linux-администраторами, в то время как их Windows коллеги используют их гораздо реже, а некоторые вообще не знают о такой возможности. Тем не менее такая возможность в Windows существует и позволяет значительно упростить некоторые сценарии работы с папками и файлами. В данной статье мы рассмотрим все виды ссылок, доступные в среде ОС Windows, а также разные способы работы с ними, начиная от командной строки и заканчивая PowerShell.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Жесткие ссылки (HardLink)
Жесткие ссылки представляют собой дополнительную запись в файловой таблице раздела для существующего файла. Таким образом жесткая ссылка ничем не отличается от исходного файла, но файл при этом не копируется физически и остается на диске в единственном экземпляре. При изменении файла по любой из жестких ссылок, остальные обновляются автоматически (что логично, так как файл один).
Мы можем переименовывать, копировать, перемещать (в пределах логического тома) ссылки — размер занимаемого места при этом не изменится. При удалении ссылок файл продолжает существовать до тех пор, пока не будет удалена последняя жесткая ссылка на него. Фактически отличить, где находится оригинальный файл, а где жесткая ссылка невозможно, по сути, файл на разделе это и есть жесткая ссылка.
Жесткая ссылка может существовать только в пределах логического тома, поддерживается файловыми системами NTFS и ReFS начиная со сборки 19536.
Для создания жесткой ссылки можно воспользоваться утилитой mklink:
mklink /H C:Folder1LinkFileName C:FolderFileName
Где ключ /H предписывает создать именно жесткую ссылку, далее следует путь к новому файлу и целевому файлу, на который мы делаем ссылку. Путь можно указывать как абсолютные, так и относительные, в имени создаваемого файла не забывайте указывать расширение.
Ссылки можно создавать и при помощи PowerShell, для этого воспользуйтесь командой:
New-Item -ItemType HardLink -Path C:Folder1LinkFileName -Target C:FolderFileName
Команда другая, но принцип тот же самый: -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:Folder1LinkFileName C:FolderFileName
При создании ссылки не забываем указать расширения для файла. Как и в случае с точкой соединения символическая ссылка отображается в виде ярлыка и обозначается в выводе команды dir:
Для создания символической ссылки на директорию добавьте ключ /D:
mklink /D D:LinkFolder C:Folder
В PowerShell все проще, тип объекта будет определен автоматически:
New-Item -ItemType SymbolicLink -Path C:Folder1LinkFileName -Target C:FolderFileName
Если в качестве цели указан файл — будет создана ссылка на файл, каталог — ссылка на каталог.
При переименовании, перемещении или удалении исходного файла или каталога все символические ссылки работать перестанут:
При копировании символической ссылки за пределы локального тома будет скопирован исходный файл, даже если целевой том поддерживает работу со ссылками, но это не мешает создать новую ссылку на другом томе.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Сложно сказать, какими функциями не обладает компьютер на базе Windows 10. Кажется, разработчики предусмотрели все, что только может понадобиться пользователю. Так, например, владельцам ПК доступна символьная ссылка на операционной системе Windows 10. Подавляющему большинству пользователей данная опция незнакома, а потому важно рассказать о ней более подробно, чтобы понять, при каких сценариях может пригодиться Symbolic link.
Что это такое и для чего нужно?
Многие владельцы компьютеров не ограничиваются одним накопителем, а используют сразу два диска. Чаще всего встречается комбинация HDD и SSD, когда системные данные и программы хранятся на шустром твердотельном накопителе, а мультимедийная информация остается на вместительном жестком диске. В этой связи пользователям нередко приходится переносить данные с одного накопителя на другой, а любой диск, как известно, от частой перезаписи начинает быстро изнашиваться.
И что делать, если файл располагается на HDD, а вы хотите его запускать с SSD, но в то же время желаете не расходовать оставшийся ресурс перезаписи?
В подобной ситуации на помощь готова прийти символьная ссылка, которая представляет собой ярлык с информацией о расположении данных. Воспользовавшись подобным инструментом, вы сможете заставить Windows думать, что файл находится на диске D, но при этом запускать его с накопителя C и наоборот.
На заметку. Ссылку можно создать не только для файлов, но и целых папок. То же самое касается приложений и других видов данных, доступных на компьютере.
Говоря о Symbolic link, стоит отдельно рассказать, чем она отличается от обычного ярлыка. На самом деле, если мы подразумеваем мягкую ссылку, то она не имеет никакой разницы в сравнении с привычным ярлыком. То есть двойной клик по иконке приводит к перемещению пользователя в исходное расположение файла/папки. Другое дело, если речь идет о жесткой ссылке, которая выглядит как настоящая папка (файл), но при этом располагается в другом месте. Далее мы будем говорить о двух видах Symbolic link.
Как создать символьную ссылку в Windows 10
Создать Symbolic link можно встроенными средствами компьютера. Всего выделяется два способа, каждый из которых ориентирован на определенную группу пользователей. Проанализируйте оба варианта, чтобы выбрать для себя наиболее подходящий.
Mklink
Чаще всего символическая ссылка создается при помощи инструмента Mklink через Командную строку. Выглядит процедура следующим образом:
- Щелкните ПКМ по значку «Пуск».
- Откройте Командную строку.
- Для создания мягкой ссылки на конкретный файл введите запрос формата «mklink X», где вместо «X» будет указано имя файла. Для обработки команды не забудьте нажать клавишу «Enter».
- Если речь идет о конкретном каталоге, воспользуйтесь запросом «mklink /D X», подставив вместо «X» конкретную директорию. Например, «C:Games».
- Для жестких аналогов используйте команды формата «mklink /H X» и «mklink /J X» соответственно.
Если подобный способ создания символических ссылок кажется вам слишком сложным, предлагаем обратиться к альтернативному варианту.
Применение графического инструмента
Также воспользоваться инструментом можно без помощи Командной строки, а напрямую через «Проводник». Но предварительно нужно будет установить на компьютер Link Shell Extension. Дальнейшая инструкция выглядит следующим образом:
- Щелкните ПКМ по нужному файлу/каталогу.
- Выберите опцию «Запомнить источник ссылки».
- Откройте директорию, куда планируется поместить Symbolic link.
- Кликните ПКМ.
- Выберите «Поместить как», а затем – «Символическую ссылку».
Отметим, что Link Shell Extension дает возможность использования других линков, поэтому сначала изучите функционал программы, после чего обращайтесь к нему при первой необходимости.
Symlink – also called a Symbolic link or Soft link – could be one of the most hidden concepts for computer users. However, that does not take away its importance and the benefits it offers. How about accessing folders and files from different folders without maintaining duplicate copies? Yes, that’s the power of Symlink.
What is a Symlink or Symbolic Link
Symlink are shortcut files that refer to a physical file or folder located elsewhere. Symlinks act as virtual files or folders, which can be used to link with individual files or folders, making them appear as if they are stored in the folder with Symlinks, even though the Symlinks is only pointing to their real location.
Don’t confuse Symlink as just shortcuts
It is important to understand that Symlinks are more than just Shortcuts that as a Windows user you already know. A shortcut file simply points to the desired file while Symlink will make it look like the linked file is actually there. Once you click on the Symlink, you will be directed to the actual file location.
Structure of a Symlink
A Symlink is build of a text string that is automatically interpreted and followed by the operating system as a path to another file or directory. This other file or directory is called the “target“.
Symlink exists independent of its target. If a Symlink is deleted, its target remains unaffected. If a Symlink points to a target, and sometime later that target is moved, renamed or deleted, the symbolic link is not automatically updated or deleted, but continues to exist and still points to the old target. However, such Symlinks pointing to moved or non-existing targets are sometimes called broken, orphaned, dead, or dangling.
Benefits of Symlinks
- Symlinks consume very little space and are very fast to create. You save a lot of hard disk space with Symlinks
- Contrary to hard links, symlinks can link to files across file systems. Remember, if you delete the original file, the hard link still keeps it alive, a Symlink doesn’t
- Symlinks maintain the folder structure in which the Symlinks are contained. For example, let’s say there is a txt file is contained in the “Utility” folder which is located at /D/Myfolder/Utility/windowsclub.txt . Now if a Symlink for the Utility folder was created in the Dropbox folder, and you went searching for windowsclub.txt within the Dropbox folder, the file path would read /D/Myfolder/Utility/windowsclub.txt rather than transforming back to the original/actual file path.
- Using Symlinks you can store your media files Music/Videos on another hard drive, but make them show up in your standard Music/Videos folders, so they’ll be detected by your media programs
- Developers often replace duplicate copies of shared files/folders with symlinks referencing physical files/folders. Replacing redundant copies of files can save a great deal of physical disk space, and significantly reduce the time taken to copy/backup/deploy/clone projects.
Significance of Symlinks in today’s development world
As Yosef Durr, Lead Senior Program Manager, Microsoft mentions on Windows Blog,
Many popular development tools like git and package managers like npm recognize and persist symlinks when creating repos or packages, respectively. When those repos or packages are then restored elsewhere, the symlinks are also restored, ensuring disk space (and the user’s time) isn’t wasted. Git, for example, along with sites like GitHub, has become the main go-to-source code management tool used by most developers today.
The use of package managers in modern development has also exploded in recent years. For example, node package manager (npm) served ~400 million installs in the week of July 1st, 2015, but served more than 1.2 billion installs just one year later – a 3x increase in just one year! In late June 2016, npm served more than 1.7 billion node packages in just seven days!
Although Symlinks have distinct advantages, it was primarily utilized by UNIX-compatible operating systems like Linux, FreeBSD, OSX, etc., where symlinks can be created without restrictions. For Windows users, although Symlinks was made available starting from Windows Vista, it was difficult and tedious to create.
Because of Windows Vista’s security requirements, users needed local admin rights and, importantly, had to run mlink in a command-line console elevated as administrator to create/modify Symlinks. This latter restriction resulted in Symlinks being infrequently used by most Windows developers and caused many modern cross-platform development tools to work less efficiently and reliably on Windows.
However, now on Windows 10 or Windows 11, once a user with admin rights enables Developer Mode, anybody on the PC can run the mklink command without elevating a command-line console.
How do you create Symlinks
Symlinks can be created either using the mklink command or the CreateSymbolicLink API.
You can make Symlinks or Symbolic Links in Windows, using the command-line utility: mklink. The syntax is as follows:
MKLINK [[ /D] | [ /H] | [ /J]] Link Target
Where –
- /D: creates a symbolic directory link or soft link
- /H: creates a hard link to a file instead of a symbolic link
- /J: creates a Directory Junction link
Target: Specifies the path that the new link refers to.
Now for example, if you want d:Data to be made available from the folder D:Maindata use:
C:mklink /D D:Maindata D:Data
Now, if you now look in D:Maindata, you will see whatever files that were there in the other directory. It has always been there in Linux, but this feature has now been made available in Vista too.
Using mklink command
While using mklink command, use the below syntax:
“mklink /prefix link_path file/folder_path”
Note: mklink can create several types of links. Below are the types-
- /D Creates a directory symbolic link. The default is a file symbolic link.
- /H Creates a hard link instead of a symbolic link.
- /J Creates a Directory Junction.
For instance, I created a directory junction of my Music folder to my desktop. Refer the below screenshot-
So when I click on the Symlink, it looks that my music files are stored in C:Users<username>DesktopMusic although it is originally present in C:Users<username>Music.
Remember, if your path has any spaces in it, then you need to place quotes around it.
Using CreateSymbolicLink
To enable the new behavior when using the CreateSymbolicLink API, there is an additional dwFlags option you will need to set the value as:
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
0x2
So by choosing the above value, you have specified the flag to allow the creation of symbolic links when the process is not elevated.
To read more on how to create Symlink using CreateSymbolicLink API, visit windows.com.
Read: Create Hardlinks, Symbolic Links, Junctions, Volume Mountpoints.
Conclusion
It can be said that Symlinks are more useful than mere shortcuts however they are a bit difficult to create. An average PC user may still find it a little scary to create. What’s more, even today, many users struggle to understand the concept of shortcuts well and hence may struggle to differentiate Symlinks and understand its use.
Having said that, it is almost a guarantee that you will find it easy to change whatever settings you can so that a program is pointing to the right directory, and you don’t really create a Symlink, but knowing how to set up and use a good Symlink can be really handy.
Symlink – also called a Symbolic link or Soft link – could be one of the most hidden concepts for computer users. However, that does not take away its importance and the benefits it offers. How about accessing folders and files from different folders without maintaining duplicate copies? Yes, that’s the power of Symlink.
What is a Symlink or Symbolic Link
Symlink are shortcut files that refer to a physical file or folder located elsewhere. Symlinks act as virtual files or folders, which can be used to link with individual files or folders, making them appear as if they are stored in the folder with Symlinks, even though the Symlinks is only pointing to their real location.
Don’t confuse Symlink as just shortcuts
It is important to understand that Symlinks are more than just Shortcuts that as a Windows user you already know. A shortcut file simply points to the desired file while Symlink will make it look like the linked file is actually there. Once you click on the Symlink, you will be directed to the actual file location.
Structure of a Symlink
A Symlink is build of a text string that is automatically interpreted and followed by the operating system as a path to another file or directory. This other file or directory is called the “target“.
Symlink exists independent of its target. If a Symlink is deleted, its target remains unaffected. If a Symlink points to a target, and sometime later that target is moved, renamed or deleted, the symbolic link is not automatically updated or deleted, but continues to exist and still points to the old target. However, such Symlinks pointing to moved or non-existing targets are sometimes called broken, orphaned, dead, or dangling.
Benefits of Symlinks
- Symlinks consume very little space and are very fast to create. You save a lot of hard disk space with Symlinks
- Contrary to hard links, symlinks can link to files across file systems. Remember, if you delete the original file, the hard link still keeps it alive, a Symlink doesn’t
- Symlinks maintain the folder structure in which the Symlinks are contained. For example, let’s say there is a txt file is contained in the “Utility” folder which is located at /D/Myfolder/Utility/windowsclub.txt . Now if a Symlink for the Utility folder was created in the Dropbox folder, and you went searching for windowsclub.txt within the Dropbox folder, the file path would read /D/Myfolder/Utility/windowsclub.txt rather than transforming back to the original/actual file path.
- Using Symlinks you can store your media files Music/Videos on another hard drive, but make them show up in your standard Music/Videos folders, so they’ll be detected by your media programs
- Developers often replace duplicate copies of shared files/folders with symlinks referencing physical files/folders. Replacing redundant copies of files can save a great deal of physical disk space, and significantly reduce the time taken to copy/backup/deploy/clone projects.
Significance of Symlinks in today’s development world
As Yosef Durr, Lead Senior Program Manager, Microsoft mentions on Windows Blog,
Many popular development tools like git and package managers like npm recognize and persist symlinks when creating repos or packages, respectively. When those repos or packages are then restored elsewhere, the symlinks are also restored, ensuring disk space (and the user’s time) isn’t wasted. Git, for example, along with sites like GitHub, has become the main go-to-source code management tool used by most developers today.
The use of package managers in modern development has also exploded in recent years. For example, node package manager (npm) served ~400 million installs in the week of July 1st, 2015, but served more than 1.2 billion installs just one year later – a 3x increase in just one year! In late June 2016, npm served more than 1.7 billion node packages in just seven days!
Although Symlinks have distinct advantages, it was primarily utilized by UNIX-compatible operating systems like Linux, FreeBSD, OSX, etc., where symlinks can be created without restrictions. For Windows users, although Symlinks was made available starting from Windows Vista, it was difficult and tedious to create.
Because of Windows Vista’s security requirements, users needed local admin rights and, importantly, had to run mlink in a command-line console elevated as administrator to create/modify Symlinks. This latter restriction resulted in Symlinks being infrequently used by most Windows developers and caused many modern cross-platform development tools to work less efficiently and reliably on Windows.
However, now on Windows 10 or Windows 11, once a user with admin rights enables Developer Mode, anybody on the PC can run the mklink command without elevating a command-line console.
How do you create Symlinks
Symlinks can be created either using the mklink command or the CreateSymbolicLink API.
You can make Symlinks or Symbolic Links in Windows, using the command-line utility: mklink. The syntax is as follows:
MKLINK [[ /D] | [ /H] | [ /J]] Link Target
Where –
- /D: creates a symbolic directory link or soft link
- /H: creates a hard link to a file instead of a symbolic link
- /J: creates a Directory Junction link
Target: Specifies the path that the new link refers to.
Now for example, if you want d:Data to be made available from the folder D:Maindata use:
C:mklink /D D:Maindata D:Data
Now, if you now look in D:Maindata, you will see whatever files that were there in the other directory. It has always been there in Linux, but this feature has now been made available in Vista too.
Using mklink command
While using mklink command, use the below syntax:
“mklink /prefix link_path file/folder_path”
Note: mklink can create several types of links. Below are the types-
- /D Creates a directory symbolic link. The default is a file symbolic link.
- /H Creates a hard link instead of a symbolic link.
- /J Creates a Directory Junction.
For instance, I created a directory junction of my Music folder to my desktop. Refer the below screenshot-
So when I click on the Symlink, it looks that my music files are stored in C:Users<username>DesktopMusic although it is originally present in C:Users<username>Music.
Remember, if your path has any spaces in it, then you need to place quotes around it.
Using CreateSymbolicLink
To enable the new behavior when using the CreateSymbolicLink API, there is an additional dwFlags option you will need to set the value as:
SYMBOLIC_LINK_FLAG_ALLOW_UNPRIVILEGED_CREATE
0x2
So by choosing the above value, you have specified the flag to allow the creation of symbolic links when the process is not elevated.
To read more on how to create Symlink using CreateSymbolicLink API, visit windows.com.
Read: Create Hardlinks, Symbolic Links, Junctions, Volume Mountpoints.
Conclusion
It can be said that Symlinks are more useful than mere shortcuts however they are a bit difficult to create. An average PC user may still find it a little scary to create. What’s more, even today, many users struggle to understand the concept of shortcuts well and hence may struggle to differentiate Symlinks and understand its use.
Having said that, it is almost a guarantee that you will find it easy to change whatever settings you can so that a program is pointing to the right directory, and you don’t really create a Symlink, but knowing how to set up and use a good Symlink can be really handy.