Символьная ссылка на файл в windows

Символическая ссылка (симлинк, символьная ссылка, Symbolic link) это специальный файл на файловой системе, которые сам не содержит данных, а является по сути

Символическая ссылка (симлинк, символьная ссылка, 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 утилита для создания симлинков в windows

Синтаксис у утилиты
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

параметр групповой политики Create Symbolic Links

Создадим в каталоге 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”

пример использования mklink для создание символьных ссылок в windows

Теперь при переходе в каталог C:PSDownloads вы будете видеть содержимое каталога, на который он ссылается.

символическая ссылка на каталог в windows

Выведем содержимое каталога C:PS:

Dir c:ps

Как вы видите, в атрибутах некоторых файлов указано, что это symlink/simlinkd. Также указан объект, на который они ссылаются. В Windows File Explorer симлинки отображаются с иконками ярлыков, а в их свойствах можно посмотреть целевой объект на который они ссылаются. Dir вывести информацию о всех symlink в папке

Также можно создать символически ссылки в Windows 10 с помощью PowerShell (в этом примере я использую относительные пути, чтобы создать символическую ссылку):

New-Item -ItemType SymbolicLink -Path ".testtmpfiles" -Target "..tmpfiles"

создать SymbolicLink с помощью powershell

Можно создать символическую ссылку на сетевую папку на удаленном компьютере/сервере. Адрес сетевой папки нужно указывать в формате 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 query SymlinkEvaluation

Чтобы включить использование символических ссылок на удаленные ресурсы, выполните команды:

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:
    — укажите имя диска, на котором нужно найти все символические ссылки (если вы не хотите сканировать весь диск, укажите путь к нужному каталогу)

вывести все симлинке на диске в windows

Также можно вывести список всех символических ссылок на диске с помощью PowerShell. Для этого нужно просканировать все каталоги и найти NTFS объекты с атрибутом ReparsePoint:

Get-ChildItem -Path C: -Force -Recurse -ErrorAction 'silentlycontinue' | Where { $_.Attributes -match "ReparsePoint"}

windows-hardlink-and-symlink-000.pngЖесткие и символические ссылки давно знакомы и активно используются Linux-администраторами, в то время как их Windows коллеги используют их гораздо реже, а некоторые вообще не знают о такой возможности. Тем не менее такая возможность в Windows существует и позволяет значительно упростить некоторые сценарии работы с папками и файлами. В данной статье мы рассмотрим все виды ссылок, доступные в среде ОС Windows, а также разные способы работы с ними, начиная от командной строки и заканчивая PowerShell.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Жесткие ссылки (HardLink)

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

Мы можем переименовывать, копировать, перемещать (в пределах логического тома) ссылки — размер занимаемого места при этом не изменится. При удалении ссылок файл продолжает существовать до тех пор, пока не будет удалена последняя жесткая ссылка на него. Фактически отличить, где находится оригинальный файл, а где жесткая ссылка невозможно, по сути, файл на разделе это и есть жесткая ссылка.

Жесткая ссылка может существовать только в пределах логического тома, поддерживается файловыми системами NTFS и ReFS начиная со сборки 19536.

Для создания жесткой ссылки можно воспользоваться утилитой mklink:

mklink /H C:Folder1LinkFileName C:FolderFileName

Где ключ /H предписывает создать именно жесткую ссылку, далее следует путь к новому файлу и целевому файлу, на который мы делаем ссылку. Путь можно указывать как абсолютные, так и относительные, в имени создаваемого файла не забывайте указывать расширение.

windows-hardlink-and-symlink-001.pngСсылки можно создавать и при помощи PowerShell, для этого воспользуйтесь командой:

New-Item -ItemType HardLink -Path C:Folder1LinkFileName -Target C:FolderFileName

Команда другая, но принцип тот же самый: -ItemType — тип создаваемой ссылки, в нашем случае жесткая ссылка, -Path — путь к создаваемому файлу ссылки, -Target — файл на который мы делаем ссылку.

windows-hardlink-and-symlink-002.pngМожно ли сделать жесткую ссылку на директорию? Нет, только на файлы.

Вроде бы все понятно, но если внимательный читатель заглянет в свойства папки с жесткой ссылкой, то он увидит, что ее размер равен исходному файлу, если сделаем в ней еще одну жесткую ссылку — двум исходным файлам. Как так? Не стоит переживать, все нормально. Для операционной системы жесткая ссылка ничем не отличается от обычного файла и при подсчете свободного места учитывается размер каждой ссылки, но на самом деле на диске хранится единственная копия. В этом можно убедиться, если одновременно с созданием жестких ссылок контролировать свободное место на диске.

При желании мы можем провернуть даже такой фокус:

windows-hardlink-and-symlink-003.pngКакой вывод можно сделать из того, что мы увидели и где нам могут пригодиться жесткие ссылки? Прежде всего для предоставления пользователям доступа к объемным архивам, образам или инсталляционным пакетам. Скажем у вас есть файловый сервер и несколько отделов, каждому из которых нужно предоставить доступ к одному и тому же большому файлу. При этом вы можете не бояться, что кто-то удалит файл, он удалит его только у себя в директории, для остальных пользователей он останется доступен.

Но при этом надо очень внимательно относиться к вопросу одновременного редактирования файла, так как он существует в единственном экземпляре, но доступен по множеству ссылок в этом сценарии могут возникнуть самые разные коллизии.

Точки соединения (Junction)

Очень старая технология, поддерживаемая еще начиная с Windows 2000, позволяет сделать один из каталогов псевдонимом другого каталога. Чем-то напоминает символические ссылки, но в крайне упрощенном варианте. В качестве цели можно использовать только локальные папки, но при этом нет ограничения по размещению их на одном томе. Т.е. целевая папка может находиться на диске C:, а точка соединения для нее на диске D: и все будет работать. Точки соединения поддерживаются файловыми системами NTFS и ReFS.

Для создания точки соединения можно использовать mklink:

mklink /J D:LinkFolder C:Folder

Ключ /J указывает на создание точки соединения, далее следует папка каталога-псевдонима и папка целевого каталога. При любом изменении целевого каталога (перемещение, переименование, удаление) точка соединения перестает работать.

Обратите внимание, что данная папка в проводнике отображается как ярлык, а выводе команды dir как точка соединения.

windows-hardlink-and-symlink-004.png

Это же действие в 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:

windows-hardlink-and-symlink-005.pngДля создания символической ссылки на директорию добавьте ключ /D:

mklink /D D:LinkFolder C:Folder

В PowerShell все проще, тип объекта будет определен автоматически:

New-Item -ItemType SymbolicLink -Path C:Folder1LinkFileName -Target C:FolderFileName

Если в качестве цели указан файл — будет создана ссылка на файл, каталог — ссылка на каталог.

При переименовании, перемещении или удалении исходного файла или каталога все символические ссылки работать перестанут:

windows-hardlink-and-symlink-006.pngПри копировании символической ссылки за пределы локального тома будет скопирован исходный файл, даже если целевой том поддерживает работу со ссылками, но это не мешает создать новую ссылку на другом томе.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Предыстория

В своём топике «Впечатления от Яндекс.Субботника» хабрачеловек absolvo высказал удивление, что один из докладчиков не знал о том, что символьные ссылки есть и в Windows. Честно говоря, не знал этого и я, поэтому поинтересовался об этих ссылках в комментариях.

Думаю, то, что удалось выяснить, может показаться кому-нибудь полезным.


Сразу оговорюсь, что под ссылками в Windows я понимаю ссылки в NTFS. В FAT механизмов ссылок, насколько мне известно, предусмотрено не было.

Ядро Windows поддерживает следующие виды ссылок:

  • Hard Links — жёсткие ссылки, как в *nix. Доступны начиная с Windows NT4.
  • Junction Points — аналог символических ссылок. Доступен начиная с Windows 2000 (NTFS 5).
  • Symbolic Links — символьные ссылки. Доступны начиная с Windows Vista.

Если вы никогда не имели дела с символическими и жёсткими ссылками, но хотели бы узнать о них, советую прочитать отрывок из документации файлового менеджера FAR, спасибо хабрачеловеку allemeine. Там говорится только о Hard Links и Junction Points, но этого вполне достаточно. Symbolic Links действуют так же, как и Junction Points, с той разницей, что могут указывать на файлы (и реализованы в Windows по-другому).

Hard Links можно создавать только на файлы, Junction Points — только на директории, Symbolic Links — на файлы и директории. В дальнейшем под «жёсткими ссылками» подразумеваются Hard Links, под «символьными» — Junction Points и Symbolic Links.

Жёсткие ссылки действительны в пределах одного раздела, символьные — могут пересекать границы разделов. В связи с этим символьные ссылки могут поломаться, если структуру разделов поменять.

Не со всем, что поддерживается ядром, умеет нормально работать эксплорер. Будьте осторожны при использовании Junction Points в версиях Windows до Vista. При удалении Junction Point эксплорер может залезть внутрь директории, на которую ссылается Junction Point и поудалять там всё, а затем удалить Junction Point, хотя должен лишь удалить ссылку. Наверняка могут возникнуть проблемы и при перемещении или копировании Junction Point’ов.

Мне неизвестно, нормально ли в версиях Windows до Vista относятся к Junction Points стандартные утилиты типа rmdir.

Дополнительные материалы по теме

Отмечу англоязычную статью, в которой описаны нюансы использования ссылок и некоторые программы, позволяющие с ними работать. Статья устаревшая, так что в ней говорится только о Hard Links и Junction Points (причём на последние в статье нередко ссылаются, как на symbolic links…).

По словам хабрачеловека SamDark, хорошее описание всех видов ссылок есть ещё в справке по NTFS Links (дополнению для Total Commander, см. ниже).

Софт

Теперь можно перейти к рассмотрению программ для работы со ссылками. Да-да, если вы не пользуетесь FAR (см. ниже), вам понадобятся отдельные программы. Все программы, перечисленные ниже, бесплатны.

Утилиты от Microsoft

Windows >= Vista

В Windows Vista добавили команду mklink для создания символьных и жёстких ссылок (спасибо за информацию хабрачеловеку metamorph).

Windows >= 2000

fsutil hardlink create ссылка файл

Создаёт Hard Link на файл (источник).

linkd ссылка директория

Создаёт Junction Point на директорию (источник). Утилита входит в Microsoft Windows Resources Kit.

Расширения для Explorer

NTFS Link интегрируется в Explorer и добавляет во всплывающее меню, появляюшееся после перетаскивания правой кнопкой мыши, пункты «Create junction point» и «Create hard link». Кроме того, она перехватывает вызовы Explorer’а, обеспечивая нормальное перемещение/копирование/удаление созданных ссылок.

NTFS Links (не путать с дополнением для Total Commander, см. ниже) — абсолютно аналогичная программа. Спасибо за комментарий хабрачеловеку vpbar.

Я рекомендую: Link Shell Extension — аналогичная программа, обладающая расширенным функционалом и очень подробным описанием. Спасибо за комментарий хабрачеловеку versia.

NTFS Links — дополнение для Total Commander

Страница программы (за информацию спасибо хабрачеловеку SamDark). Плагин может запускаться как отдельная программа, вне Total Commander’а.

FAR

Консольный файловый менеджер FAR уже давно поддерживает Hard Links и Junction Points «из коробки». Для создания ссылки используйте сочетание клавиш Alt-F6 ;-) Спасибо за комментарий хабрачеловеку 4xis.

Junction Link Magic

Junction Link Magic — программа с графическим интерфейсом для создания, изменения и модификации Junction Points. Спасибо за комментарий хабрачеловеку vady.

Junction — консольная программа для создания Junction Points

Junction лучше, чем linkd, тем, что не нужно тащить весь Resource Kit :-) Спасибо за комментарий хабрачеловеку corp.

UPD: обновил топик с учётом комментариев.

Товарищи, добрый день.  Хотя эта тема и не самая популярная, но она мне очень много раз выручала, поэтому я не могу о ней не написать. Итак, что значит термин «символьная ссылка» я возьму из энциклопедии Wikipedia:

Символьная ссылка (также симлинк от англ. Symbolic link, символическая ссылка) — специальный файл в файловой системе, для которого не формируются никакие данные, кроме одной текстовой строки с указателем. Эта строка трактуется как путь к файлу, который должен быть открыт при попытке обратиться к данной ссылке (файлу). Символьная ссылка занимает ровно столько места в файловой системе, сколько требуется для записи её содержимого (нормальный файл занимает как минимум один блок раздела).

По своей сути же, симлинк — это ярлык, который позволяет системе думать, что это не ярлык, а настоящий файл (или папка). К примеру, частое применение символьной ссылок для папок — это установка игры на SSD, с последующем переносом файлов графики на жесткий диск, с целью экономия места на SSD и создание символьной ссылки до исходного места. Игра будет думать, что все файлы находятся в исходной папке. Так же символьные ссылки можно применять когда используются одинаковые файлы в нескольких каталогах, чтобы не вносить правки во все файлы, можно создать с одного файла символьные ссылки и вносить изменения один раз.

Создать символьную ссылку очень просто и сейчас я вам это докажу. Открываем командную строку, нажимаем Win+R, вводим cmd и жмём ОК. Хотя если вы собираетесь работать с системными файлами, может понадобиться командная строка с правами администратора.

Создать символьную ссылку очень просто и сейчас я вам это докажу. Открываем командную строку, нажимаем Win+R, вводим cmd и жмём ОК.

Дальше нам нужно ввести команду для создания символьной ссылки, выглядит она следующем образом:

mklink /j "путь, где будет создана символьная ссылка" "путь, где находятся исходный файл или папка"

где /j — атрибут создания соединения для каталога. Если вы создаете ссылку на файл, атрибут ставить не надо.

К примеру, если я хочу создать символьную ссылку на папку mklink на локальном диске E, как папку mk на диске С, мне нужно ввести следующую команду (и да, символьная ссылка может называться не так, как исходный файл (папка):

mklink /j "C:mk" "E:mklink"

002

В результате мы получим вот это.

003

Если же мы хотим создать символьную ссылку на файл, например на файл 1.txt, хранящийся в корне диска E. для использования в виде файла 2.txt. скажем в папке mslink на диске C, команда будет выглядеть вот так:

mklink "C:mslink2.txt" "E:1.txt"

004

А на выходе получим вот это.

005

Резюмируя скажу, что знание возможностей данной функции, открывает большие возможности. С помощью неё я выходил из нескольких ситуаций, когда не хватало свободного пространства, на моем старом SSD, позволяя быстро перенести игру из папки origin на другой диск. Но вариантов использования её гораздо больше, к примеру перенос кэша браузеров, о котором мы поговорим в одной из будущих статей.

Вроде всё. Надеюсь эта статья оказалась вам полезной, обязательно нажмите одну из кнопок ниже, чтобы рассказать о ней друзьям. Также подпишитесь на обновления сайта, введя свой e-mail в поле справа или подписавшись на группу во Вконтакте и канал YouTube.
Спасибо за внимание :)

Материал сайта geekteam.pro

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

  1. Symlinks consume very little space and are very fast to create. You save a lot of hard disk space with Symlinks
  2. 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
  3. 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.
  4. 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
  5. 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.

symlinks

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-

Symlinks in Windows 10

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.

create Symlinks in Windows 10

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

  1. Symlinks consume very little space and are very fast to create. You save a lot of hard disk space with Symlinks
  2. 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
  3. 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.
  4. 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
  5. 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.

symlinks

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-

Symlinks in Windows 10

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.

create Symlinks in Windows 10

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.

На чтение 3 мин Просмотров 144 Опубликовано 20.10.2021

Символьные ссылки или символические ссылки Символьная ссылка (также известная как мягкая ссылка) состоит из выбранного типа файла, который служит ссылкой на другой файл или каталог. Эта функция работает в Windows 10, Windows 8 и Windows 7. Вы можете использовать их в Dropbox, если не хотите перемещать папки, но хотите синхронизировать файлы. Давайте узнаем, как создавать симлинки в Windows 10.

Как создавать симлинки в Windows 10

  • Командная строка
  • Directory Linker
  • Создатель символических ссылок
  • Как сделать данные двух папок доступными в одной
  • 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

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

    Как создавать симлинки в Windows 10/8/7

    Преимущество использования символических ссылок в том, что они прозрачны для пользователей; ссылки выглядят как обычные файлы или каталоги и могут быть использованы пользователем или приложением точно таким же образом. Поскольку они являются родными для файловой системы NTFS, пользователи Windows XP не имеют возможности создавать символические ссылки по технической причине. Скачать Directory Linker @ CodePlex

    3] Symbolic Link Creator или Symlink Creator for Windows

    Мы говорили о создании создателя символических ссылок с помощью Directory Linker. Вот еще один инструмент, который является более продвинутым и не имеет одной функции по сравнению с Directory Linker.

    Как создавать симлинки в Windows 10/8/7

    • Создание символических ссылок на файлы или папки
    • Поддерживает создание 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. Если вы все еще на них, лучше обновиться.

    Like this post? Please share to your friends:
  • Сжатие системных файлов windows 10 нужно ли
  • Сильно загружен цп на компьютере windows 10
  • Символьная ссылка windows 10 на сетевую папку
  • Сжатие системного диска windows 10 для чего
  • Сильно загружается жесткий диск windows 10