Символическая ссылка (симлинк, символьная ссылка, 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"}
Как создавать и удалять симлинки
Обновлено: 07.07.2020
Опубликовано: 25.01.2017
Используемые термины: Симлинк, Windows, Linux.
Работы с символьными ссылками в Windows ведутся из командной строки.
Синтаксис
mklink <имя создаваемого симлинка> <на что ведет симлинк>
Симлинк на файл
mklink C:UsersdmoskDesktopcmd.exe C:Windowssystem32cmd.exe
* в данном примере на рабочем столе пользователя dmosk будет создан симлинк на файл cmd.exe.
Симлинк на директорию
mklink /D «C:UsersdmoskDesktopСетевая папка» \dmosk.localshare
* в примере создается симлинк на сетевую папку \dmosk.localshare
** так как в названии папки есть пробел, путь заключен в кавычки.
Для создания ссылки на папку доступен также ключ /J. Созданная таким образом ссылка будет по некоторым особенностям напоминать жесткую ссылку.
Удалить симлинк
В Windows его можно удалить в проводнике, как обычный файл или папку.
Или использовать командную строку.
Для папки:
rmdir «C:UsersdmoskDesktopСетевая папка»
Для файла:
del C:UsersdmoskDesktopcmd.exe
Разрешить симлинки в Windows
Если при попытке перейти по символьной ссылке мы получим ошибку «Символическая ссылка не может быть загружена, так как ее тип отключен», открываем командную строку от администратора и вводим команду:
fsutil behavior set SymlinkEvaluation L2L:1 R2R:1 L2R:1 R2L:1
Если это не помогло, пробуем создать симлинк с ключом /J.
Linux и FreeBSD
Создание
Общий синтаксис
ln -s <на какой существующий объект будет вести> <создаваемый симлинк>
В системах на базе Linux (например, Ubuntu или CentOS) и FreeBSD симлинк для каталога и файла создаются одинаково:
ln -s /usr/share/nginx/html/index.php /home/dmosk/
ln -s /usr/share/nginx/html /home/dmosk/
* в первом примере создана символьная ссылка в домашней директории пользователя dmosk на файл index.php; во втором — на каталог /usr/share/nginx/html.
Удаление
Также используется одна команда:
rm /home/dmosk/index.php
Была ли полезна вам эта инструкция?
Да Нет
Материал из Я Админ
Перейти к: навигация, поиск
Содержание
- 1 MKLINK
- 2 Для чего это нужно?
- 3 Создание символической ссылки
- 3.1 До Windows Vista
- 3.2 Начиная с Windows Vista
- 4 Пример
- 5 Как удалить ссылку
MKLINK
Команда MKLINK позволяет подключить диск (в том числе и сетевой) как папку NTFS.
Для чего это нужно?
На работе использовалась старая программа, которая могла работать только с БД из определенной папки (жестко прописанной). Была поставлена задача предоставить доступ к БД двум пользователям. А как? Путь поменять нельзя. Вышел из положения созданием символической ссылки на ресурс.
Создание символической ссылки
До Windows Vista
Требуется установка Microsoft Windows Resources Kit http://www.microsoft.com/en-us/download/details.aspx?id=17657
После установки пакета можно использовать следующие команды
Монтировать <каталог1> в <каталог2> можно командой:
linkd <каталог2> <каталог1>
Посмотреть на какой каталог ссылается <каталог2>:
linkd <каталог2>
Отмонтировать каталог:
linkd <каталог2> /D
<каталог2> принято называть точкой соединения.
Начиная с Windows Vista
MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение /D Создание символической ссылки на каталог. По умолчанию создается символическая ссылка на файл. /H Создание жесткой связи вместо символической ссылки. /J Создание соединения для каталога. Ссылка Имя новой символической ссылки. Назначение Путь (относительный или абсолютный), на который ссылается новая ссылка.
Пример
mklink /d "c:Program FilesPorn" "Z:Porn"
Как удалить ссылку
При удалении подключенного каталога исходный остается на месте. И все же проверьте сами. Вдруг я ошибаюсь.
I am having an issue creating a symbolic link on Windows 7 Ultimate. I want to map a folder from a mapped network drive into My Documents.
mklink /D "C:UsersVegardDocumentsVirtual Machines" "Z:Virtual Machines"
returns You do not have sufficient privilege to perform this operation.
.
Z:Virtual Machines
is set to be available offline, but I am online when I am trying this.
This is what I’ve tried (as suggested here):
-
Using Local Security Policy to add my user to Local PolicesUser Rights AssignmentsCreate symbolic links, and rebooting. No luck.
-
Running cmd.exe as an Administrator, but then I cannot see the mapped network drive at all. I can however create symbolic links on the drive.
-
Using
fsutil
to changesymlinkevaluation
, to setR2L:1
(even though it seem to me I wantL2R
, which is already enabled). -
Using full UNC path of the shared folder does not work either (
The syntax of the command is incorrect.
when run as an administrator,You do not have sufficient privilege to perform this operation.
when run as a normal user).
Output of fsutil behavior query symlinkevaluation
:
C:Windowssystem32>fsutil behavior query symlinkevaluation
Local to local symbolic links are enabled.
Local to remote symbolic links are enabled.
Remote to local symbolic links are enabled.
Remote to remote symbolic links are disabled.
Any ideas?
asked Nov 14, 2010 at 21:20
Vegard LarsenVegard Larsen
1,1192 gold badges11 silver badges20 bronze badges
1
Run cmd as administrator and use UNC path.
The following command worked for me as administrator:
mklink /D C:temp11111 \serversharefoldername
And also check whether your command contains appropriate quotes ("
).
answered Nov 15, 2010 at 10:10
1
This is a old thread, but still want to clarify that you can create symbolic links like this:
Your user account has some security policies on them by default which can be disabled, through secpol.msc. Go to the Run dialog and type:
secpol.msc
- Navigate to:
Local Policies > User Rights Assignment
- Double click: Create Symbolic Links
- Add your username to the list, click OK
- Log off
When you log back in, run cmd
with admin privileges. Now you should be able to run mklink commands like this with no problems:
mklink /d %userprofile%music \servermusic
Note: Make sure the directory you’re trying to link to exists or hasn’t been moved or deleted, prior to linking.
Excellll
12.5k11 gold badges50 silver badges78 bronze badges
answered Mar 7, 2014 at 14:57
reconx86reconx86
2012 silver badges5 bronze badges
2
If you are doing this in Powershell, you’ll need to open CMD first:
CMD /C MKLINK /D C:localpath \UNCpathfolder
The /C
argument tells CMD to run the command in the string and then exit.
answered May 19, 2017 at 18:16
music2myearmusic2myear
39.7k41 gold badges83 silver badges127 bronze badges
My solution became to disable User Account Control, reboot, then create the symlinks as my own user, then re-enabling UAC and rebooting again.
Rather unfortunate if I need to create further symlinks at a later stage, but it does work, it is just very inconvenient.
answered Nov 15, 2010 at 7:59
Vegard LarsenVegard Larsen
1,1192 gold badges11 silver badges20 bronze badges
1
You cannot do symbolic links in networks and mapped drive as source, you can only use it as target and the source is your local drives
you cannot do like this:
Mapped Drive is Drive Z:
Target (Local drive or Network)
Mklink /d z:SourceFolder c:Target
Mklink /d z:SourceFolder F:SharedNetworkFolder
they are error and cannot used as symbolic links
only from Local to network and Local to Local only will work in symbolic links
answered Dec 13, 2018 at 6:35
You need to enable local to remote links by running this command with elevated rights:
fsutil behavior set SymlinkEvaluation L2R:1
Also you can enable this with your local or group policy:
ComputerSystemFilesystemSelectively allow the evaluation of a symbolic link → allow local to remote
answered Jul 8, 2016 at 13:17
1
fsutil behavior set SymlinkEvaluation R2R:1
answered Oct 23, 2020 at 0:29
1
The answer below is doesn’t exactly answer the question, but since I ended here after searching for my issue, I’ll add my solution.
Somehow I always got the
The system cannot find the file specified.
when I tried to make a hardlink using mklink
.
However, when I used fsutil hardlink
it worked.
Note that the source and destination folders for mklink
and fsutil hardlink
are reversed!
answered Dec 7, 2020 at 8:50
RoaldRoald
1093 bronze badges
I am having an issue creating a symbolic link on Windows 7 Ultimate. I want to map a folder from a mapped network drive into My Documents.
mklink /D "C:UsersVegardDocumentsVirtual Machines" "Z:Virtual Machines"
returns You do not have sufficient privilege to perform this operation.
.
Z:Virtual Machines
is set to be available offline, but I am online when I am trying this.
This is what I’ve tried (as suggested here):
-
Using Local Security Policy to add my user to Local PolicesUser Rights AssignmentsCreate symbolic links, and rebooting. No luck.
-
Running cmd.exe as an Administrator, but then I cannot see the mapped network drive at all. I can however create symbolic links on the drive.
-
Using
fsutil
to changesymlinkevaluation
, to setR2L:1
(even though it seem to me I wantL2R
, which is already enabled). -
Using full UNC path of the shared folder does not work either (
The syntax of the command is incorrect.
when run as an administrator,You do not have sufficient privilege to perform this operation.
when run as a normal user).
Output of fsutil behavior query symlinkevaluation
:
C:Windowssystem32>fsutil behavior query symlinkevaluation
Local to local symbolic links are enabled.
Local to remote symbolic links are enabled.
Remote to local symbolic links are enabled.
Remote to remote symbolic links are disabled.
Any ideas?
asked Nov 14, 2010 at 21:20
Vegard LarsenVegard Larsen
1,1192 gold badges11 silver badges20 bronze badges
1
Run cmd as administrator and use UNC path.
The following command worked for me as administrator:
mklink /D C:temp11111 \serversharefoldername
And also check whether your command contains appropriate quotes ("
).
answered Nov 15, 2010 at 10:10
1
This is a old thread, but still want to clarify that you can create symbolic links like this:
Your user account has some security policies on them by default which can be disabled, through secpol.msc. Go to the Run dialog and type:
secpol.msc
- Navigate to:
Local Policies > User Rights Assignment
- Double click: Create Symbolic Links
- Add your username to the list, click OK
- Log off
When you log back in, run cmd
with admin privileges. Now you should be able to run mklink commands like this with no problems:
mklink /d %userprofile%music \servermusic
Note: Make sure the directory you’re trying to link to exists or hasn’t been moved or deleted, prior to linking.
Excellll
12.5k11 gold badges50 silver badges78 bronze badges
answered Mar 7, 2014 at 14:57
reconx86reconx86
2012 silver badges5 bronze badges
2
If you are doing this in Powershell, you’ll need to open CMD first:
CMD /C MKLINK /D C:localpath \UNCpathfolder
The /C
argument tells CMD to run the command in the string and then exit.
answered May 19, 2017 at 18:16
music2myearmusic2myear
39.7k41 gold badges83 silver badges127 bronze badges
My solution became to disable User Account Control, reboot, then create the symlinks as my own user, then re-enabling UAC and rebooting again.
Rather unfortunate if I need to create further symlinks at a later stage, but it does work, it is just very inconvenient.
answered Nov 15, 2010 at 7:59
Vegard LarsenVegard Larsen
1,1192 gold badges11 silver badges20 bronze badges
1
You cannot do symbolic links in networks and mapped drive as source, you can only use it as target and the source is your local drives
you cannot do like this:
Mapped Drive is Drive Z:
Target (Local drive or Network)
Mklink /d z:SourceFolder c:Target
Mklink /d z:SourceFolder F:SharedNetworkFolder
they are error and cannot used as symbolic links
only from Local to network and Local to Local only will work in symbolic links
answered Dec 13, 2018 at 6:35
You need to enable local to remote links by running this command with elevated rights:
fsutil behavior set SymlinkEvaluation L2R:1
Also you can enable this with your local or group policy:
ComputerSystemFilesystemSelectively allow the evaluation of a symbolic link → allow local to remote
answered Jul 8, 2016 at 13:17
1
fsutil behavior set SymlinkEvaluation R2R:1
answered Oct 23, 2020 at 0:29
1
The answer below is doesn’t exactly answer the question, but since I ended here after searching for my issue, I’ll add my solution.
Somehow I always got the
The system cannot find the file specified.
when I tried to make a hardlink using mklink
.
However, when I used fsutil hardlink
it worked.
Note that the source and destination folders for mklink
and fsutil hardlink
are reversed!
answered Dec 7, 2020 at 8:50
RoaldRoald
1093 bronze badges
Когда вы работаете с общими ресурсами в сети, вам может понадобиться быстро получить ссылку на общую сетевую папку и вставить ее в окно чата. Или, например, вы можете узнать, как создать ссылку на файл на вашем компьютере и использовать ее для предоставления доступа к этому файлу другим пользователям в той же сети. Несмотря на то, что их нелегко выяснить, Windows дает нам два способа гиперссылки на путь к файлу, папке или библиотеке, которые являются общими в сети.
ПРИМЕЧАНИЕ. Данное руководство охватывает Windows 10 с обновлением от мая 2020 года и Windows 7. В обеих операционных системах все работает одинаково.
Способ 1. Как создать ссылку на файл на вашем компьютере с помощью мастера общего доступа (также работает с гиперссылками на папки или библиотеки)
Когда вы делитесь файлом, папкой или библиотекой с сетью, вы можете использовать мастер общего доступа . Этот мастер включен по умолчанию, поэтому у вас не должно возникнуть проблем с его запуском. Чтобы узнать больше об этом, прочитайте это руководство и следуйте ему, чтобы делиться файлами, папками или библиотеками: Как делиться папками, файлами и библиотеками с сетью в Windows.
На последнем этапе процесса, когда мастер совместного использования сообщает, что файл, папка или библиотека является общим, не закрывайте мастер.
Посмотрите внимательно под «Файл/папка/библиотека совместно» уведомления. Там Windows сообщает, что «Вы можете отправить кому-нибудь ссылки на эти общие элементы по электронной почте или скопировать и вставить ссылки в другое приложение».
При нажатии кнопки или нажмите адрес электронной почты ссылку, используемый по умолчанию клиент электронной почты будет открыт, и прямая ссылка автоматически вставляется в него.
Если вы нажмете ссылку «копировать», ссылка на общий ресурс будет скопирована в буфер обмена, и вы сможете вставить ее в другие программы.
Способ 2: Как создать ссылку на файл на общем диске, используя File Explorer (также работает для гиперссылки на папки или библиотеки)
Второй метод применяется к файлам, папкам и библиотекам, которые вы уже открыли для общего доступа на своем компьютере Windows. Если вам интересно, как создать ссылку на файл на общем диске, этот метод тоже подойдет.
Откройте проводник , перейдите в раздел «Сеть» и дважды щелкните или дважды нажмите на ПК, где найден файл, папка или библиотека, которую вы хотите связать.
Это показывает вам список всех папок, которые используются в сети. Просматривайте, пока не найдете конкретный файл, папку или библиотеку, для которой вы хотите прямую ссылку.
Удерживая нажатой клавишу «Shift» на клавиатуре, щелкните правой кнопкой мыши файл, папку или библиотеку, для которой требуется ссылка. Затем выберите «Копировать как путь» в контекстном меню.
Если вы используете Windows 10, вы можете также выбрать пункт (файл, папка, библиотека) и нажмите кнопку или нажмите на «Копировать в пути» кнопке из File Explorer, домашней вкладки.
Затем вставьте ссылку в приложение или документ, где вы хотите, чтобы это было. У вас должно быть что-то похожее на это:
Чтобы активировать папку, библиотеку или ссылку на файл, нажмите клавишу « Ввод», чтобы сделать ее доступной для клика в приложении Office, куда вы ее скопировали. Когда вы нажимаете Ctrl + щелчок по ссылке, File Explorer открывает общий файл, папку или библиотеку, если сетевой компьютер, совместно использующий этот ресурс, доступен.
Мой путь к файлу не работает! Почему?
В некоторых случаях создаваемые вами ссылки на файлы могут не работать. Есть несколько возможных причин. Вот что вы можете попробовать:
Независимо от того, хотите ли вы создать ссылку на файл, папку или библиотеку, в некоторых приложениях вам может потребоваться ввести «file:///» перед сетевым путем, например так:
В других случаях, в зависимости от приложений, в которые вы хотите поместить ссылки на файлы, вам также может понадобиться вручную заменить все пустые места в путях ссылок следующим текстом: %20. Вот пример:
Существует также вероятность того, что в некоторых старых версиях Windows или в других операционных системах обратные слеши сетевых путей не распознаются. В этом случае вы можете попробовать заменить все обратные косые черты () на прямые косые черты (/).
Наконец, обратите внимание, что, что бы вы ни делали, в некоторых приложениях ссылки на файлы просто не работают как обычные ссылки. Так обстоит дело с большинством веб-браузеров и чатов, которые рассматривают эти локальные ссылки как угрозы безопасности. Однако, несмотря на это, пользователь, который получает вашу ссылку на файл, может по-прежнему использовать ссылку для доступа к этому файлу, папке или библиотеке. Все, что ему нужно сделать, это скопировать и вставить ссылку в адресной строке (его или ее) Проводника и нажать Enter.
Вы используете файловые гиперссылки?
Мы надеемся, что вы нашли эти советы полезными. Если вам известны другие способы создания ссылки на файлы, папки или библиотеки, используемые в сети, сообщите нам об этом. Прокомментируйте ниже, и давайте поделимся всеми способами генерировать ссылки в Windows.
Используя жёсткие ссылки файлов и каталогов, можно иметь несколько различных имён файлов или каталогов, ссылающихся на одни и те же данные. В windows механизм работает в файловой системе NTFS. Статья о том, как сделать такие ссылки в windows.
Возможно вы сталикивались со следующими задачами:
- Установить приложение или игру на HDD диск, а часть перенести на SSD.
- Перетащить данные приложения, без правки конфигурации. (пример ниже для SQL Server)
- Приложение/данные не влазят на один диск, а на другом диске как раз есть свободное место под оставшуюся часть.
Всё это можно решить используя ссылки на файлы и каталоги. Например, начиная с Windows Vista в винде отсутствует каталог «Documents and Settings» а операционная система на него ссылается из папки «Users» для совместимости с приложениями написанными для Windows XP.
Создание символической ссылки
Для создание ссылки используется команда mklink
(из командной строки cmd
, кэп).
mklink
Создает символьную ссылку.
MKLINK [[/D] | [/H] | [/J]] Ссылка Назначение
/D Создает символьную ссылку на каталог.
По умолчанию создается символьная ссылка на файл.
/H Создает жесткую связь вместо символьной ссылки.
/J Создает соединение для каталога.
Ссылка Указывает имя новой символьной ссылки.
Назначение Указывает путь (относительный или абсолютный), на который ссылается
новая ссылка.
Мне недавно хотелось удалить папку кеша обновлений Microsoft SQL Server, чтобы освободить 2 Гб на системном SSD диске. Вместо удаления я перенес данные на другой диск (D:). Cоздал символьную ссылку и, вуаля, место освобождено, а SQL Server думает, что данные на прежнем на месте.
C:>mklink /D "c:Program FilesMicrosoft SQL Server110Setup BootstrapUpdate Cache" "d:distrSql ServerUpdate Cache"
Символическая ссылка создана для c:Program FilesMicrosoft SQL Server110Setup BootstrapUpdate Cache <<===>> d:distrSql ServerUpdate Cache
Существуют инструменты для создание ссылок через графический интерфейс, например Link Shell Extension или NTFS Link , также их можно легко сделать в Far’е по Alt+F6
Отличия жестких ссылок от символических ссылок и связей
Материал из справки Far Manager.
На разделах NTFS можно создавать жёсткие ссылки (HardLink) для файлов, связи (Junction) для папок и символические ссылки (SymLink) для файлов и папок с помощью команды Alt-F6.
Жёсткие ссылки
Жёсткая ссылка (HardLink) — это просто ещё одна запись в папке для данного файла.
Когда создаётся жёсткая ссылка, сам файл не копируется физически, а только появляется под ещё одним именем или в ещё одном месте, а его старые имя и местонахождение остаются нетронутыми. С этого момента жёсткая ссылка неотличима от первоначальной записи в папке. Единственное отличие — то, что для жёсткой ссылка не создаётся короткое имя файла, поэтому из ДОС-программ она не видна.
Когда меняется размер или дата файла, все соответствующие записи в папках обновляются автоматически. При удалении файла он не удаляется физически до тех пор, пока все жёсткие ссылки, указывающие на него, не будут удалены. Порядок их удаления значения не имеет. При удалении жёсткой ссылки в корзину количество ссылок у файла сохраняется.
FAR умеет создавать жёсткие ссылки, отображать их количество для каждого файла в отдельной колонке (по умолчанию это последняя колонка в 9-м режиме панелей), а также сортировать файлы по количеству жёстких ссылок.
Создавать жёсткие ссылки можно только на том же диске, на котором расположен исходный файл.
Связи
Эта технология позволяет отображать любые локальные папки на любые другие локальные папки. Например, если папка D:SYMLINK указывает на C:WINNTSYSTEM32 в качестве своей цели, то программа, обращающаяся к D:SYMLINKDRIVERS, будет на самом деле обращаться к C:WINNTSYSTEM32DRIVERS. В отличие от жёстких ссылок, связи папок не обязательно должны располагаться на том же диске.
В Windows 2000 нельзя напрямую создать связь, ссылающуюся на папку CD-ROM, но это ограничение можно обойти, смонтировав CD-ROM диск на папку NTFS-раздела.
Символические ссылки
Символические ссылки (SymLink) на NTFS поддерживаются, начиная с Windows Vista (NT 6.0). Они представляют собой улучшенный вариант связей каталогов — символические ссылки могут указывать как на папки, так и на файлы, как на локальные, так и на сетевые, при этом поддерживаются относительные пути.
UPD PowerShell
Создание символической ссылки с помощью New-Item
New-Item -Path C:LinkDir -ItemType SymbolicLink -Value F:RealDir
Обновить bash на Windows 10
Если, запуская подсистему Linux мы получаем сообщение о необходимости обновить пакеты, то можно решить проблему удалив подсистему и поставив заново. Но тогда удалятся и данные, а можно данные сохранить, проведя процедуру upgrade подсистемы linux.
Перенести базы PostgreSQL на другой диск Windows
Если у вас установлен Postgres в конфигурации по умолчанию, то его базы хранятся в Program Files. Если есть необходимость освободить место на системном диске C, то можно перенести базы данных Postgres на другой диск.
Как отключить гибернацию на windows?
В данной статье описывается отключение (удаление файла hiberfil.sys) и повторное включение режима гибернации на компьютере под управлением Windows
Cannot start virtual machine on Virtualbox
При сообщении Raw-mode is unavailable courtesy of Hyper-V. (VERR_SUPDRV_NO_RAW_MODE_HYPER_V_ROOT).
отключить компонент Windows — Hyper-V
и перезагрузиться.
Ошибка CredSSP при подключении по RDP
Устранение ошибки подключения по RDP связанное с установкой обновлений CredSSP для уязвимости CVE-2018-0886
Docker Volume Location In WSL 2
\wsl$docker-desktop-dataversion-pack-datacommunitydockervolumes
В обсуждении записи про раздел реестра App Paths читатель YaNkEE подметил, что файл write.exe присутствует одновременно в папках Windows и System32. И это не единственный пример дублирования файлов. Вы можете убедиться, что в каждой из этих папок лежит по блокноту. Зачем это сделано?
Преданья старины глубокой
Два файла notepad.exe обеспечивают совместимость приложений, играя ту же роль, что и некоторые подразделы App Paths.
Увеличить рисунок
Сторонние программы
В данном случае речь идет о совместимости со сторонними программами, в которых жестко прописан путь к блокноту. Например, многие установщики программ до сих пор открывают readme.txt именно в нем, и кто его знает, как разработчики это прописали.
Все дело в том, что в Windows 3.0 местом хранения блокнота была папка Windows, а в Windows NT 3.х – папка System32. Несмотря на то, что обе системы давно стали пыльной историей, блокнот до сих пор размещают в обеих папках. Интересно, что делается это не во всех операционных системах Microsoft, а если и делается, то различными способами!
Реализация в разных операционных системах
В Windows XP и Windows Vista в обеих папках лежит по файлу notepad.exe. А разработчики Windows Server 2008 решили убрать блокнот из папки Windows, оставив его только в System32. Наверное, они сочли, что на серверной системе устанавливается меньше прикладных программ, и вероятность попадания на несовместимую программу намного ниже.
Судя по тому, что в следующих серверах от этой идеи не отказались, расчет оправдался. Любопытно, что после включения компонента Desktop Experience блокнот все-таки появляется в папке Windows (спасибо за информацию, Morpheus).
В Windows 7 и Windows 8 блокнот присутствует в обеих папках, но на диске размещен только один файл notepad.exe.
Его наличие в разных папках обеспечивают жесткие ссылки (hard links), которые и станут основными героинями сегодняшнего разговора. Аналогично, в серверных системах после включения компонента создается именно жесткая ссылка на notepad.exe, а не копия файла. Кстати, программа write тоже дублируется жесткой ссылкой.
Не совсем понятно, почему это решение не внедрили еще в Vista, но совершенно ясно, почему так не сделали в XP. Дело в том, что жесткие ссылки являются свойством файловой системы NTFS, а ХР можно было устанавливать еще и на FAT32.
[+] Дальше в программе
Как увидеть жесткие ссылки
Символические ссылки легко определить – в файловом менеджере их видно по значку, а в результатах команды dir напротив ссылок пишется SYMLINK. Жесткие ссылки не очевидны, в прямом смысле этого слова.
Проверить уникальность блокнота можно в командной строке, запущенной от имени администратора. Команда fsutil покажет вам жесткие ссылки на файл:
fsutil hardlink list %windir%notepad.exe
Сюрприз! Блокнотов в Windows 7 не два, а четыре! Как видите, еще два обнаруживаются в папке winsxs.
А в 64-разрядной Windows 7 их вообще шесть.
Увеличить рисунок
Это связано с тем, что в папке System32 лежат 64-разрядные версии файлов, в том числе блокнот (я выделил еще одну занятную нестыковку Windows, уходящую корнями в прошлое). А в папке SysWOW64 хранится 32-разрядная версия notepad.exe, которая имеет свою жесткую ссылку в папке winsxs, в чем вы можете убедиться самостоятельно.
Внушительное количество жестких ссылок подводит нас к вопросу использования ими дискового пространства.
Сколько места на диске занимают жесткие ссылки
Нисколько! В файловой системе NTFS каждый файл можно считать жесткой ссылкой на самого себя. На файл может ссылаться сколько угодно жестких ссылок (точнее, не больше 1023). Они могут запускать его из разных расположений, и при этом неотличимы друг от друга в проводнике и результатах команды dir.
Физически на диске присутствует только один файл, но нестыковка между структурой файловой системы и ее отображением в оболочке порождает вопросы и даже деструктивные действия.
Самым ярким примером непонимания принципов работы и назначения жестких ссылок являются руководства по чистке папки winsxs. О ней меня недавно просил рассказать читатель блога Антон, и вот представился случай.
Не пропустите рассказы о том, как грамотно уменьшить размер папки winsxs в Windows 7 и в Windows 8 и новее.
Проводник видит папку winsxs так:
Но в реальности папка содержит немного уникальных файлов, которые изначально занимают на диске в среднем 400 Мб. Эта цифра относится к Windows Vista, и логично предположить, что в Windows 7 дело обстоит примерно так же (по крайней мере, понятен порядок цифры).
Все остальные файлы с помощью жестких ссылок проецируются в папки Windows, System32 и т.д. Появление папки winsxs связано с изменением платформы Windows, которая теперь складывается из компонентов как дом из кирпичей. По сравнению с Windows XP такая модель упрощает развертывание и обслуживание WIM-образов. Это верно даже после установки системы, поскольку она представляет собой образ, примененный к диску. Например, список компонентов и их состояние можно посмотреть командой
Dism /online /Get-Features
Может показаться, что зачистка папки winsxs никак не нарушает нормальную работу системы. Так, Антон лишился только русского языка в Internet Explorer, причем с его слов исключительно по невнимательности. Однако нарушения нормальной работы Windows не всегда заметны, если они происходят под капотом системы.
Для стабильной работы Windows необходимо нормальное управление компонентами, безотказное восстановление и правильное обновление.
Так, содержимое папки winsxs используется для проверки системных файлов (SFC), а хранящиеся в ней версии файлов обеспечивают подбор наиболее подходящей версии при установке и удалении обновлений.
Подробнее о назначении папки winsxs вы можете узнать из блогов создателей Windows и команды Windows Server Core (EN), а я предлагаю вернуться к разговору о жестких ссылках.
Как создать жесткие ссылки
Мы выяснили, что Microsoft использует жесткие ссылки для обеспечения совместимости (пример с блокнотами) и безотказного обслуживания операционной системы (пример с папкой winsxs). Предлагаю вам самостоятельно создать жесткие ссылки и поиграть с ними.
Жесткие ссылки необязательно должны иметь такие же имена, как файл, на который они указывают. Это легко проверить:
@echo off :: Переходим на рабочий стол cd %userprofile%desktop :: Создаем произвольный текстовый файл echo Hello, Hard Links! > 1.txt :: Создаем жесткую ссылку на файл fsutil hardlink create 2.txt 1.txt :: Создаем жесткую ссылку на жесткую ссылку fsutil hardlink create 3.txt 2.txt pause
Все три файла имеют одинаковое содержимое и атрибуты.
Попробуйте изменить и сохранить третий файл, а потом открыть первый. Вы увидите сделанные вами изменения, хотя вы его не открывали до этого. Аналогично, если вы заблокируете изменения в любом файле атрибутом «Только для чтения», это немедленно отразится на всех ссылках.
Хотите еще поэкспериментировать? Удалите один из файлов в корзину. Теперь откройте любой из оставшихся файлов и измените его, а затем восстановите удаленный файл. Вы обнаружите в нем изменения, произошедшие за то время, что он валялся в корзине!
Кстати, вы заметили, что после удаления файла у его братьев на значке появился замок, загадка которого, похоже, до сих пор полностью не разгадана.
Замок пропадает, как только вы возвращаете файл из корзины и обновляете папку или любой из файлов.
Как ускорить свою работу с помощью ссылок
В комментариях все к той же записи про AppPath читатель jakv поделился своим опытом использования ссылок.
Имею папку MyTools, добавленную в PATH. В папку помещаю символические ссылки с краткими именами на необходимые мне программы. В результате при вызове программы не нужно вводить полный путь.
Раскрывая этот пример, допустим, что у вас утилита Process Explorer лежит в папке D:Sysinternals. Можно назначить ей псевдоним pe одной командой, используя символическую или жесткую ссылку на выбор.
Вы уже видели, как создает ссылки fsutil. Давайте теперь сделаем это командой mklink.
:: Символическая ссылка на файл mklink D:MyToolspe.exe D:Sysinternalsprocexp.exe :: Жесткая ссылка на файл mklink /h D:MyToolspe1.exe D:Sysinternalsprocexp.exe
Во втором случае я использовал другой псевдоним, т.к. не получится создать в папке два файла с одинаковым именем.
В отдельном столбце проводника я отобразил атрибуты файлов, чтобы показать, что буква L обозначает символическую ссылку. Вы также можете добавить столбец «Цель ссылки», чтобы посмотреть, куда она ведет. Этот рисунок также хорошо подчеркивает разницу между жесткими и символическими ссылками. Первые являются полноценными файлами, а вторые больше похожи на ярлыки.
Из своей практики я уже делился примером укрощения программы, в которой был зашит абсолютный путь к одной из папок профиля. Кстати, пример резонирует с причиной наличия блокнота в каждой из системных папок. А недавно я решил перенести одну папку в другое место. Поскольку ранее я создал на нее ссылки в реестре, символическая ссылка избавила меня от необходимости выполнять поиск и замену пути в нем.
В чем разница между жесткими ссылками, символическими ссылками и соединениями
Поскольку эта запись логически завершает серию статей о ссылках NTFS, хотелось бы подвести итог и сопоставить их возможности.
Создание и удаление связей
Команда mklink в Windows 7 и Vista умеет создавать все три типа связей. Жесткие ссылки можно создать только на файлы, но не на папки — для этого исторически существуют соединения.
Символические ссылки совмещают в себе свойства соединений и жестких ссылок. Для пользовательских задач их вполне достаточно, и в большинстве случаев не возникает необходимости в применении других способов.
Удаление ссылок в Windows 7 и Vista не несет в себе особых сюрпризов, поскольку целевые файлы и папки остаются в целости и сохранности. Внимательным нужно быть лишь при рекурсивном удалении файлов из папки командой del /s, т.к. при этом будут удалены все файлы в целевой папке.
Сравнительная таблица
Для полноты картины в таблице отражены некоторые возможности, которых я не касался в своих материалах.
Возможность | Символическая (symbolic link) |
Жесткая (hard link) |
Соединение (junction) |
---|---|---|---|
Файловая система | NTFS | NTFS | NTFS |
Ссылка на локальную папку | Да | Нет | Да |
Ссылка на локальный файл | Да | Да | Нет |
Ссылка на сетевую папку или файл | Да (UNC путь) | Нет | Нет |
Относительный путь в ссылке | Да | Нет | Нет |
Связь между томами* | Да (абсолютные ссылки) |
Нет | Да (локальные тома) |
Команда для просмотра ссылок | dir | fsutil | dir |
* Не путайте том с диском или разделом. Тома могут включать в себя несколько разделов или даже дисков. Подробнее читайте в статье о конфигурировании динамических томов (мой перевод 2006 года:)
Различные типы связей между папками и файлами дают файловой системе NTFS преимущества, которые Microsoft использует для обеспечения совместимости приложений и стабильной работы Windows. В немалой степени именно по этой причине уже третье поколение систем Microsoft не устанавливается на файловую систем FAT32.
Проголосовавших за первые два пункта я прошу объяснить источники беспокойства, а выбравших п.1 еще и причину выделения под систему столь малого раздела. И расскажите в комментариях, сколько вы у себя насчитали блокнотов Нужна помощь с подсчетом?