Символічна посилання (симлінк, символьне посилання, Symbolic link) це спеціальний файл на файлової системи, які сам не містить даних, а є по суті ярликом, що вказує на якийсь інший об’єкт (файл або папку). При зверненні до сімліку операційна система вважає, що це оригінальний файл (папка) і працює з ними абсолютно прозоро.

Символічні посилання використовуються в Windows досить часто для системних файлів і каталогів. Користувач може їх застосовувати, коли потрібно перенести частину “важких” файлів на інший диск, але щоб Windows вважала, що файли все ще знаходяться в початковому каталозі (наприклад в ситуаціях, коли потрібно економити місце на SSD, перенісши деякі каталоги на більш повільний і ємний SSD, не порушуючи працездатності програм). Можна використовувати симлінк на SMB файловому сервері, коли каталоги з різних LUN повинні бути доступні через одну точку входу.

У Windows є три типи файлових посилань для NTFS томів: жорсткі, м’які (симлінк), точки з’єднання (Junction point).

  • Жорсткі посилання (Жорсткі посилання) – можуть вказувати тільки на локальний файл, але не на папку. Такий файл – це посилання на інший файлу на цьому ж диску без фактичного дублювання самого файлу. У нього відображається такий же розмір і властивості, як у цільового файлу (але реальне місце на диску він не займає);
  • Точки стику (Directory Hard Link, точка з’єднання) – можуть вказувати тільки на папку (на цьому ж або на іншому розділі);
  • Символічні посилання (М’яка посилання, симлінк) – можуть вказувати на локальний файл, папку і мережевий каталог на віддаленому комп’ютері (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“.

Якщо вам потрібно дозволити створювати символічні посилання звичайним користувачам, потрібно додати групу користувачів в параметр групової політики Створення символічних посилань (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.

Тепер створимо в цьому каталозі симлінк на інший каталог на цьому ж диску:

mklink /D “C:PSDownloads” “C:UsersuserDownloads”

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

Тепер при переході в каталог C: PS Downloads ви будете бачити вміст каталогу, на який він посилається.

символічна посилання на каталог в 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 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 (simlink);
  • /S -виконати команду рекурсивно для всіх вкладених каталогів;
  • C: – вкажіть ім’я диска, на якому потрібно знайти всі символічні посилання (якщо ви не хочете сканувати весь диск, вкажіть шлях до потрібного каталогу)

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

Також можна вивести список всіх символічних посилань на диску за допомогою PowerShell. Для цього потрібно просканувати всі каталоги і знайти NTFS об’єкти з атрибутом ReparsePoint:

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

Leave a Reply

Your email address will not be published. Required fields are marked *