Символическая ссылка (симлинк, symbolic link) — это специальный файл в файловой системе NTFS, который не содержит данных, а указывает на другой объект (файл, папку или сетевой ресурс). При обращении к симлинку Windows прозрачно работает с целевым объектом. Симлинки полезны для переноса данных на другой диск (например, с SSD на HDD) без нарушения работы программ, а также для организации доступа к разным каталогам через одну точку входа, включая сетевые ресурсы. В статье мы рассмотрим типы ссылок, их создание с помощью mklink и PowerShell, управление правами и поиск симлинков.
1. Типы ссылок в Windows
Windows поддерживает три типа ссылок для NTFS:
– Hard Links (Жесткие ссылки): Указывают только на локальный файл (не папку) на том же диске, не занимая дополнительное место.
– Junction Points (Точки соединения): Указывают на локальную папку на том же или другом разделе.
– Symbolic Links (Символические ссылки): Универсальны, поддерживают файлы, папки, сетевые ресурсы (UNC-пути) и относительные пути.
В большинстве случаев рекомендуется использовать символические ссылки из-за их гибкости.
2. Создание символических ссылок
Симлинки создаются с помощью утилиты mklink или PowerShell. Для работы с mklink требуются права администратора, иначе появится ошибка:
You do not have sufficient privilege to perform this operation.
Создание симлинка с помощью mklink
1. Откройте командную строку (cmd) с правами администратора.
2. Синтаксис команды mklink:
mklink [опции] <имя_ссылки> <цель>
Опции:
– /D: Символическая ссылка на каталог.
– /H: Жесткая ссылка (только для файлов).
– /J: Точка соединения (для каталогов).
Пример: Симлинк на файл
Создание ссылки на 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
Теперь запуск C:\PS\note.exe открывает notepad.exe.
Пример: Симлинк на каталог
Создание ссылки на папку Downloads:
mklink /D "C:\PS\Downloads" "C:\Users\user\Downloads"
Переход в C:\PS\Downloads отображает содержимое C:\Users\user\Downloads.
Пример: Симлинк на сетевой ресурс
Создание ссылки на сетевую папку:
mklink /D C:\PS\share \\mskfs01\Share
Или на административную шару:
mklink /D C:\remotePC\server1 \\192.168.31.15\C$
Создание симлинка с помощью PowerShell
PowerShell позволяет создавать симлинки с использованием относительных путей:
New-Item -ItemType SymbolicLink -Path ".\test\tmpfiles" -Target "..\tmp\files"
3. Разрешение создания симлинков для пользователей
По умолчанию создавать симлинки могут только администраторы. Чтобы разрешить это обычным пользователям:
1. Откройте редактор групповых политик: gpedit.msc.
2. Перейдите в:
Конфигурация компьютера -> Конфигурация Windows -> Параметры безопасности -> Локальные политики -> Назначения прав пользователя
3. Найдите параметр Создание символических ссылок.
4. Добавьте нужную группу пользователей, или пользователя (например, Users).
5. Обновите политики:
gpupdate /force
4. Работа с сетевыми симлинками
Если при доступе к сетевому симлинку возникает ошибка:
The symbolic link cannot be followed because its type is disabled, проверьте настройки:
fsutil behavior query SymlinkEvaluation
Разрешите использование сетевых симлинков:
fsutil behavior set SymlinkEvaluation R2R:1
fsutil behavior set SymlinkEvaluation R2L:1
5. Управление симлинками
Симлинки обрабатываются как обычные файлы или папки:
– Переименование/перемещение: Windows автоматически обновляет пути.
– Удаление:
del C:\PS\note.exe
rd C:\PS\Downloads
6. Поиск символических ссылок
Windows не предоставляет встроенных утилит для удобного управления всеми симлинками, но их можно найти.
Поиск через cmd
Найти все симлинки на диске C:\:
dir /AL /S C:\ | find "SYMLINK"
Опции:
– /AL: Показать файлы с атрибутом L (симлинк).
– /S: Рекурсивный поиск.
Поиск через PowerShell
Найти объекты с атрибутом ReparsePoint (симлинки и точки соединения):
Get-ChildItem -Path C:\ -Force -Recurse -ErrorAction 'SilentlyContinue' | Where-Object { $_.Attributes -match "ReparsePoint" }
7. Просмотр симлинков
– В Проводнике Windows симлинки отображаются с иконкой ярлыка. В свойствах указан целевой объект.
– В cmd:
dir C:\PS
Симлинки помечены как SYMLINK или SYMLINKD с указанием цели.
8. Рекомендации и устранение неполадок
– Права: Для создания симлинков без GPO требуются права администратора.
– Сетевые ресурсы: Убедитесь, что UNC-путь доступен и SymlinkEvaluation настроен.
– Диагностика: Если симлинк не работает, проверьте целевой объект и права доступа.
– Резервное копирование: Некоторые утилиты могут копировать симлинки как файлы — используйте robocopy с опцией /SL.
– Удаление: Удаление симлинка не влияет на целевой объект.
Символические ссылки в Windows — мощный инструмент для переноса данных, организации доступа к сетевым ресурсам и оптимизации хранения. Используйте mklink для простых задач и PowerShell для автоматизации. Настройте права через GPO для пользователей и включите поддержку сетевых симлинков с fsutil. Поиск и управление симлинками выполняются через dir или PowerShell, обеспечивая полный контроль над файловой системой.