MKLINK — создание символических и жёстких ссылок в CMD

MKLINK — команда CMD для создания символических ссылок, ссылок-соединений и жёстких ссылок на файлы и папки в Windows. Требует прав администратора.

Команда MKLINK создаёт символические ссылки, жёсткие ссылки и ссылки-соединения (junction) на файлы и папки в файловой системе Windows. Инструмент незаменим для перенаправления путей приложений без физического перемещения данных — например, для переноса папки пользователя на другой диск или создания общей точки доступа к файлу из нескольких мест.

MKLINK [[/D] | [/H] | [/J]] ссылка цель

Параметры:

  • /D — символическая ссылка на директорию (по умолчанию создаётся ссылка на файл).
  • /H — жёсткая ссылка (hard link) на файл. Только для файлов на одном томе NTFS.
  • /J — ссылка-соединение (junction) на директорию. Только локальные пути.
  • ссылка — путь и имя создаваемой ссылки.
  • цель — путь к существующему файлу или папке, на которые указывает ссылка.

Ключи и параметры

Ключ Тип ссылки Для чего Пример
(без ключа) Символическая ссылка на файл Файл в другом месте, может указывать на другой том или сетевой путь MKLINK link.txt C:\real\file.txt
/D Символическая ссылка на директорию Папка в другом месте, может указывать на другой том или UNC-путь MKLINK /D C:\Link D:\Target
/H Жёсткая ссылка на файл Второй «вход» к тому же файлу; оба указывают на одни данные MKLINK /H copy.txt original.txt
/J Junction (соединение директорий) Перенаправление папки только по локальным NTFS-путям MKLINK /J C:\OldDir D:\NewDir

Примеры использования

Символическая ссылка на файл

Создать ссылку config.txt в текущей папке, которая будет указывать на оригинальный файл конфигурации:

MKLINK config.txt C:\App\Settings\config.txt

Открыв config.txt в любом редакторе, вы будете редактировать оригинальный файл — ссылка прозрачна для приложений.

Символическая ссылка на папку

Перенести папку пользователя на другой диск, сохранив прежний путь:

MKLINK /D C:\Users\user\Documents D:\UserDocs

Программы, обращающиеся к C:\Users\user\Documents, прозрачно перенаправляются в D:\UserDocs.

Жёсткая ссылка на файл

Создать второй «вход» к файлу без дублирования данных на диске:

MKLINK /H D:\Backup\file.txt C:\Data\file.txt

Оба файла указывают на одни и те же данные. Удаление одного из них не уничтожит данные — они удалятся только когда исчезнет последняя ссылка.

Junction — перенос папки приложения

Перенести папку игры с диска C на диск D, сохранив путь, который ожидает программа запуска:

MKLINK /J "C:\Program Files\Game" D:\Games\Game

Лаунчер по-прежнему находит игру по стандартному пути, но данные хранятся на другом диске.

Ссылка на сетевой путь

Создать символическую ссылку на сетевую папку:

MKLINK /D C:\SharedDocs \\server\share\documents

Обратите внимание: Junction (/J) не поддерживает UNC-пути. Для сетевых путей нужна символическая ссылка (/D).

Проверка созданной ссылки

Убедиться, что ссылка создана и на что она указывает:

dir C:\Users\user\Documents

В выводе dir ссылка отмечена как <JUNCTION>, <SYMLINK> или <SYMLINKD> с указанием цели.

Частые ошибки и решения

Ошибка / поведение Причина Решение
You do not have sufficient privilege to perform this operation Создание символических ссылок требует прав администратора или политики «Создание символических ссылок» Запустите CMD от имени администратора (ПКМ → «Запуск от имени администратора»)
Cannot create a file when that file already exists По указанному пути уже существует файл или папка с таким именем Переименуйте или удалите существующий объект, затем повторите команду
Жёсткая ссылка /H не создаётся для папки Жёсткие ссылки поддерживаются только для файлов, не для директорий Для папок используйте /J (junction) или /D (символическая ссылка)
Junction /J не работает с сетевым путём Junction поддерживает только локальные абсолютные пути NTFS Для сетевых путей используйте MKLINK /D
Ссылка есть, но переход по ней не работает Целевой путь не существует или стал недоступен Проверьте путь командой dir /al и убедитесь, что цель ссылки существует
Удаление ссылки удаляет данные Использовали rmdir /s на junction или символическую ссылку на папку Для удаления ссылки без уничтожения данных используйте rmdir (без /s) или del для файловых ссылок

Когда применять, а когда нет

MKLINK требует файловой системы NTFS — на FAT32 и exFAT команда не работает. Жёсткие ссылки (/H) работают только в пределах одного тома; для ссылок между дисками используйте символические ссылки или junction. Junction (/J) — самый совместимый вариант для перенаправления локальных папок: он работает даже в старых Windows без специальных политик. Символические ссылки требуют прав администратора по умолчанию; в режиме разработчика Windows это ограничение можно снять. Аналог в PowerShell: командлет New-Item -ItemType SymbolicLink -Path ссылка -Target цель или New-Item -ItemType HardLink.

FAQ

В чём разница между символической ссылкой и junction?

Символическая ссылка (/D) может указывать на любой путь, включая сетевые и пути на других дисках. Junction (/J) работает только с абсолютными локальными путями NTFS, но не требует специальных прав и совместима со старыми приложениями.

Занимает ли ссылка место на диске?

Символические ссылки и junction практически не занимают места — несколько байт метаданных. Жёсткая ссылка (/H) вообще не создаёт копию данных: оба имени указывают на одни блоки диска.

Что произойдёт, если удалить цель символической ссылки?

Ссылка останется, но станет «битой» — при обращении к ней будет ошибка. Удалить саму ссылку можно командой del (для файловой) или rmdir (для директорийной) без ключа /s.

Да, для создания символических ссылок по умолчанию нужны права администратора. В Windows 10 Developer Mode это ограничение снято. Junction и жёсткие ссылки обычный пользователь создать не может — тоже нужен администратор.

Нет. Символические ссылки и junction — возможности файловой системы NTFS. На FAT32 и exFAT команда вернёт ошибку.

Как посмотреть все ссылки в папке?

Выполните dir /al C:\путь — ключ /al фильтрует только reparse-точки (символические ссылки и junction) с указанием цели.

Оцените статью
( Пока оценок нет )
MW10
Добавить комментарий

Нажимая на кнопку "Отправить комментарий", я даю согласие на обработку персональных данных и принимаю политику конфиденциальности.