Как создавать и удалять симлинки
Обновлено:
Опубликовано:
Используемые термины: Симлинк, Windows, Linux.
Windows
Linux
Проблемы и решения
Работы с символьными ссылками в Windows ведутся из командной строки.
Синтаксис
mklink <имя создаваемого симлинка> <на что ведет симлинк>
Симлинк на файл
mklink C:\Users\dmosk\Desktop\cmd.exe C:\Windows\system32\cmd.exe
* в данном примере на рабочем столе пользователя dmosk будет создан симлинк на файл cmd.exe.
Симлинк на директорию
mklink /D «C:\Users\dmosk\Desktop\Сетевая папка» \\dmosk.local\share
* в примере создается симлинк на сетевую папку \\dmosk.local\share
** так как в названии папки есть пробел, путь заключен в кавычки.
Для создания ссылки на папку доступен также ключ /J. Созданная таким образом ссылка будет по некоторым особенностям напоминать жесткую ссылку.
Удалить симлинк
В Windows его можно удалить в проводнике, как обычный файл или папку.
Или использовать командную строку.
Для папки:
rmdir «C:\Users\dmosk\Desktop\Сетевая папка»
Для файла:
del C:\Users\dmosk\Desktop\cmd.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
Решение возможных проблем
При работе с симлинками мы можем сталкиваться с различными проблемами. Я рассмотрю те, с которыми приходилось сталкиваться мне.
ln: failed to create symbolic link … Function not implemented
При попытке создать симлинк мы можем получить ошибку Function not implemented, например:
ln: failed to create symbolic link ‘/etc/pve/nodes/pve/fullchain.pem’: Function not implemented
Причина: файловая система, на которой мы хотим создать файл не поддерживает симлинки. Посмотреть файловую систему подмонтированных разделов можно командой:
df -T
Решение: как правило, решения зависит от используемой файловой системы и ее драйвера. Но, обычно, решения у проблемы нет и нужно искать методы работы без использования символьных ссылок.
Была ли полезна вам эта инструкция?
Да Нет
Символическая ссылка (симлинк, символьная ссылка, Symbolic link) это специальный файл на файловой системе, которые сам не содержит данных, а является по сути ярлыком, указывающим на какой-то другой объект (файл или папку). При обращении к симлику операционная система считает, что это оригинальный файл (папка) и работает с ними совершенно прозрачно.
Символические ссылки используются в Windows довольно часто для системных файлов и каталогов. Пользователь может их применять, когда нужно перенести часть “тяжелых” файлов на другой диск, но чтобы Windows считала, что файлы все еще находятся в исходном каталоге (например в ситуациях, когда нужно экономить место на SSD, перенеся некоторые каталоги на более медленный и емкий SSD, не нарушая работоспособности программ). Можно использовать симлинки на SMB файловом сервере, когда каталоги с разных LUN должны быть доступны через одну точку входа.
В Windows есть три типа файловых ссылок для NTFS томов: жесткие, мягкие (симлинки), точки соединения (Junction point).
- Hard Links (жесткие ссылки) – могут указывать только на локальный файл, но не на папку. Такой файл – это ссылка на другой файла на этом же диске без фактического дублирования самого файла. У него отображается такой же размер и свойства, как у целевого файла (но реальное место на диске он не занимает);
- Junction Points (Directory Hard Link, точка соединения) – могут указывать только на папку (на этом же или на другом разделе);
- Symbolic Links (мягкая ссылка, симлинк) – могут указывать на локальный файл, папку и сетевой каталог на удаленном компьютере (UNC), поддерживаются относительные пути.
В подавляющем большинстве случаев вам будет достаточно функционала symbolic link, как наиболее универсального средства создания ссылки на любой объект.
Как создать символическую ссылку в Windows?
Для создания символических и жестких ссылок в Windows можно использовать встроенную утилиты mklink или PowerShell.
Синтаксис у утилиты
mklink
простой. Чтобы создать символическую ссылку на файл, нужно указать имя ссылки и целевой объект, на который она должна указывать. Можно указать тип ссылки:
/D
— символьная (мягкая) ссылка на каталог,
/H
— жесткая ссылка,
/J
– точка соединения (Junction point).
Чтобы использовать mklinkдля создания символических ссылок нужно запустить командную строку с правами администратора. Иначе при запуске команды появится ошибка “
You do not have sufficient privilege to perform this operation
”.
Если вам нужно разрешить создавать символические ссылки обычным пользователям, нужно добавить группу пользователей в параметр групповой политики Create Symbolic Links (Computer configuration -> Window Settings -> Security settings -> User Rights Assignment в редакторе GPO). По умолчанию в этой политике добавлена только локальная группа «Administrators». Обновите локальные политики после изменения параметра: gpupdate /force
Создадим в каталоге C:\PS символическую ссылку на файл notepad.exe:
mklink C:\PS\note.exe c:\Windows\System32\notepad.exe
Должно появится сообщение:
symbolic link created for C:\PS\note.exe <<===>> c:\Windows\System32\notepad.exe
Теперь для запуска процесса notepad.exe можно использовать символическую ссылку note.exe.
Теперь создадим в этом каталоге симлинк на другой каталог на этом же диcке:
mklink /D “C:\PS\Downloads” “C:\Users\user\Downloads”
Теперь при переходе в каталог C:\PS\Downloads вы будете видеть содержимое каталога, на который он ссылается.
Выведем содержимое каталога C:\PS:
Dir c:\ps
Как вы видите, в атрибутах некоторых файлов указано, что это symlink/simlinkd. Также указан объект, на который они ссылаются. В Windows File Explorer симлинки отображаются с иконками ярлыков, а в их свойствах можно посмотреть целевой объект на который они ссылаются.
Также можно создать символически ссылки в Windows 10 с помощью PowerShell (в этом примере я использую относительные пути, чтобы создать символическую ссылку):
New-Item -ItemType SymbolicLink -Path ".\test\tmpfiles" -Target "..\tmp\files"
Можно создать символическую ссылку на сетевую папку на удаленном компьютере/сервере. Адрес сетевой папки нужно указывать в формате UNC. Следующий пример создаст симлинк на сетевой каталог на сервере:
mklink /D c:\ps\share \\mskfs01\Share
Например, подключим административную шару C$ с удаленного компьютера по IP адресу:
mklink /D c:\remotePC\server1 \\192.168.31.15\С$
Если при доступе к сетевой папке через симлинк, вы получили ошибку
The symbolic link cannot be followed because its type is disabled
проверьте разрешенные способы использования символических ссылок на вашем компьютере:
fsutil behavior query SymlinkEvaluation
Local to local symbolic links are enabled. Local to remote symbolic links are enabled. Remote to local symbolic links are disabled. Remote to remote symbolic links are disabled.
Чтобы включить использование символических ссылок на удаленные ресурсы, выполните команды:
fsutil behavior set SymlinkEvaluation R2R:1
fsutil behavior set SymlinkEvaluation R2L:1
Вы можете работать с символическими ссылками, как с обычными объектами файловой системы, можно переименовать, переносить или удалить их. Система автоматически изменит настройки таких симлинков, чтобы они указывали на верные целевые объекты.
Для удаления симлинков используются обычные команды, как и для удаления файлов:
Del c:\ps\note.exe
RD c:\ps\downloads
Как найти и вывести все символические ссылки на диске?
В Windows нет простых инструментов для просмотра и управления всеми симлинками на диске.
Вы можете вывести список всех символических ссылок на диске с помощью команды:
dir /AL /S C:\ | find "SYMLINK"
-
/A
– вывести файлы с атрибутом L (симлинк); -
/S
–выполнить команду рекурсивно для всех вложенных каталогов; -
C:\
— укажите имя диска, на котором нужно найти все символические ссылки (если вы не хотите сканировать весь диск, укажите путь к нужному каталогу)
Также можно вывести список всех символических ссылок на диске с помощью PowerShell. Для этого нужно просканировать все каталоги и найти NTFS объекты с атрибутом ReparsePoint:
Get-ChildItem -Path C:\ -Force -Recurse -ErrorAction 'silentlycontinue' | Where { $_.Attributes -match "ReparsePoint"}
Если вы имеете SSD и жёсткий диск, то должны знать о такой функции в Windows, как символическая ссылка, которая поможет при различных явлениях. Сразу скажу, что символические ссылки нужны для переноса данных с одного диска на другой. Например, вы хотите перенести с SSD или наоборот на твердотельный накопитель какие-то файлы, но понятное дело, что лишние перезаписи на диск никак положительно на нём не скажутся. Тогда нам помогут символические ссылки, которые предотвратят чрезмерную запись данных на диск.
Использовать символические ссылки можно из командной строки, еще там есть небольшая справка. Просто вводим в командной строке команду mklink и получаем парочку сведений об утилите.
Как создать символическую ссылку на любой системе?
Это интересно: Как использовать SSD правильно?
К примеру, возьмем файл изображения под названием images.jpg, находящийся на обычном жёстком диске E, но я хочу перенести его на SSD (диск С). Допустим, файл находится по следующему пути: E:\images.jpg, а мне нужно, чтобы он находился чисто в каталоге (С:), тогда я в командной строке пропишу следующую команду:
mklink C:\images.jpg E:\images.jpg
Перед этим он должен находится на диске Е. После этого вы увидите сообщение, что символическая ссылка создана.
На диске (С:) появился файл images.jpg, но он там находится не физически, это что-то типа ярлыка, а сам файл всё еще находится в папке (E:).
То же самое можно проделать и с папками. Предварительно создаем или переносим в старое место каталог с любым именем, скажем «folder» и прописываем в командной строке следующее:
mklink /D С:\folder E:\folder
Таким образом у вас появится на диске (С:) папка folder, но физически она будет находиться на диске (E:). Так вы сможете создавать символические ссылки на любые файлы. При удалении же такой ссылки вы файл или каталог не удалите, поэтому можете быть спокойны.
При использовании параметров \J и \D дают одинаковый эффект.
Чтобы удалить символическую ссылку необходимо выполнить такую команду:
erase С:\namefile
Либо так:
del С:\namefile
Чтобы удалить символьную ссылку на каталог, выполняем команду:
rmdir C:\folder
При этом файлы и сам каталог не удаляются, но если вы будете использовать команду «del», то это случится, поэтому будьте осторожны.
Ну вроде бы всё, что нужно знать об этой функции.
( 2 оценки, среднее 5 из 5 )
I’ve installed this Link Shell Extension. With this, you have 2 methods.
METHOD 1
Create it using the context menu as shown and deleting via file explorer.
Test with a folder like C:\Windows\Logs
as shown or similar.
I’m just creating a directory of all the possible locations of temp files to delete and I wanted a central folder where I could monitor the size of them via symbolic links.
Please note: The screen going white is just the UAC.
METHOD 2
The safest way undocumented here AFAIK.
On the created symbolic link (in steps shown above), right-click on it this time and click properties then go to the Link Properties tab.
Note: This shell extension added this tab.
Before I go on, lots more info can be found here, also, on the homepage are the x64 and 32bit versions.
So, to continue, here you can add anything to the target field as long as it’s different to the original target.
-
Here’s a before with the target as
C:\Windows\Logs
-
Here’s an after with the target as
C:\Windows\Logs_
, notice the extra_
at the end. -
Press OK
-
You can check this again by going over the same 1-3 steps above to ensure that has stuck, this time you will get an error message when you click on the Link Properties tab so the link is now broken.
-
It is now safe(r) to delete the symbolic link than method 1 IMHO.
But! Both methods work here so it’s entirely up to the user’s choice. I like the properties method which I happily stumbled upon, so you’re 100% sure the link is broken by using step 4 above.
Here’s a gif of me creating a symbolic link by right mouse button dragging a folder to another and choosing the option to create a symbolic link in the sub-menu.
To delete, just follow the 1-5 steps above of method 2 or follow method 1.
How to create and delete a symbolic link using the properties method
Please note: The screen going white is just the UAC.
На чтение 5 мин. Просмотров 56 Опубликовано
Windows 10, 8, 7 и Vista поддерживают символические ссылки, также известные как символические ссылки, которые указывают на файл или папку в вашей системе. Вы можете создать их с помощью командной строки или стороннего инструмента под названием Link Shell Extension.
Содержание
- Что такое символические ссылки?
- Как создать символические ссылки с помощью mklink
- Как создать символические ссылки с помощью графического инструмента
- Как удалить символические ссылки
Что такое символические ссылки?
Символические ссылки – это в основном расширенные ярлыки. Создайте символическую ссылку на отдельный файл или папку, и эта ссылка будет выглядеть так же, как файл или папка в Windows, даже если это просто ссылка, указывающая на файл или папку.
Например, допустим, у вас есть программа, которой нужны файлы в C: \ Program. Вы действительно хотите хранить этот каталог в D: \ Stuff, но программа требует , чтобы его файлы были в C: \ Program. Вы можете переместить исходный каталог из C: \ Program в D: \ Stuff, а затем создать символическую ссылку в C: \ Program, указывающую на D: \ Stuff. Когда вы перезапустите программу, она попытается получить доступ к своему каталогу в C: \ Program. Windows автоматически перенаправит его в D: \ Stuff, и все будет работать так же, как в C: \ Program.
Этот прием можно использовать для самых разных вещей, включая синхронизацию любой папки с такими программами, как Dropbox, Google Drive и OneDrive.
Существует два типа символических ссылок: жесткая и мягкая. Мягкие символические ссылки работают аналогично стандартным ярлыкам. Когда вы открываете программную ссылку на папку, вы будете перенаправлены в папку, где хранятся файлы. Однако из-за жесткой ссылки создается впечатление, что файл или папка действительно существуют в месте расположения символической ссылки, и ваши приложения не будут знать лучше. Это делает жесткие символические ссылки более полезными в большинстве ситуаций.
Обратите внимание, что Windows фактически не использует термины «жесткая ссылка» и «мягкая ссылка». Вместо этого используются термины «жесткая ссылка» и «символическая ссылка». В документации Windows «символическая ссылка» – это то же самое, что и «мягкая ссылка». Однако команда mklink
может создавать как жесткие ссылки (известные в Windows как «жесткие ссылки»), так и мягкие (известные в Windows как «символические ссылки»).
Как создать символические ссылки с помощью mklink
Вы можете создавать символические ссылки с помощью команды mklink в окне командной строки от имени администратора. Чтобы открыть его, найдите ярлык «Командная строка» в меню «Пуск», щелкните его правой кнопкой мыши и выберите «Запуск от имени администратора».
В Windows 10 Creators Update вы можете использовать обычное окно командной строки без запуска его в качестве администратора. Однако, чтобы сделать это без окна командной строки администратора, сначала необходимо включить режим разработчика в меню «Настройки»> «Обновление и безопасность»> «Для разработчиков».
Без каких-либо дополнительных параметров mklink
создает символическую ссылку на файл. Приведенная ниже команда создает символическую или «мягкую» ссылку в Link
, указывающую на файл Target
:
mklink Link Target
Используйте/D, если вы хотите создать программную ссылку, указывающую на каталог. вот так:
mklink/D Link Target
Используйте/H, если вы хотите создать жесткую ссылку, указывающую на файл:
mklink/H Link Target
Используйте/J, чтобы создать жесткую ссылку, указывающую на каталог, также известный как соединение каталога:
mklink/J Link Target
Так, например, если вы хотите создать жесткую ссылку в C: \ LinkToFolder, которая указывает на C: \ Users \ Name \ OriginalFolder, вы должны выполнить следующую команду:
mklink/J C: \ LinkToFolder C: \ Users \ Name \ OriginalFolder
Вам нужно будет поставить кавычки вокруг путей с пробелами. Например, если вместо этого папки называются C: \ Link To Folder и C: \ Users \ Name \ Original Folder, вместо этого вы будете использовать следующую команду:
mklink/J "C: \ Ссылка на папку" "C: \ Users \ Имя \ Исходная папка"
Если вы видите сообщение «У вас недостаточно прав для выполнения этой операции». Перед запуском команды вам нужно запустить командную строку от имени администратора.
Как создать символические ссылки с помощью графического инструмента
Если вы хотите сделать это с помощью графического инструмента, загрузите расширение Link Shell. Обязательно загрузите соответствующий пакет предварительных требований перед самим инструментом – оба они указаны на странице загрузки инструмента.
После установки найдите файл или папку, на которую вы хотите создать ссылку, щелкните ее правой кнопкой мыши и выберите «Pick Link Source» в меню.
Затем вы можете щелкнуть правой кнопкой мыши внутри другой папки, указать меню «Drop As» и выбрать «Hardlink», чтобы создать жесткую ссылку на файл, «Junction», чтобы создать жесткую ссылку на каталог, или «Symbolic Link». создать мягкую ссылку на файл или каталог.
Как удалить символические ссылки
Чтобы избавиться от символической ссылки, вы можете просто удалить ее, как любой другой файл или каталог. Просто будьте осторожны, чтобы удалить саму ссылку, а не файл или каталог, на который она ссылается.