⚙️ Паровой сервер ROADIT

Команда mklink: латунный мост между каталогами в CMD

Представьте себе сити стимпанк-мегаполиса, где каждая улочка ведёт к своему цеху, но между ними нет ни одной прямой дороги — только запутанные переулки. Чтобы добраться от склада угля к паровому котлу, курьеру приходится делать семь крюков. Знакомо? Именно так выглядит файловая система Windows, когда приложение ждёт файл по адресу C:\App\data\config.ini, а файл физически лежит на втором диске в D:\Shared\configs\config.ini. И вот тут на сцену выходит mklink — ваш личный инженер-мостостроитель, который прокладывает латунные мосты-ссылки между каталогами и файлами, не двигая ни единой шестерёнки на диске.

Команда mklink появилась в Windows Vista и с тех пор остаётся главным инструментом сисадмина для создания символических ссылок (symlinks), жёстких ссылок (hardlinks) и соединений (junctions). Если вы думаете, что это «просто ярлык», — забудьте. Ярлык — это бумажка с адресом, которую нужно открыть. Ссылка, созданная через mklink, — это настоящий паровой клапан: приложение дёргает за ручку, и пар идёт по трубам, даже не подозревая, что источник находится в другом машинном отделении.

Особенно полезна mklink тем, кто работает с Docker, WSL, разработкой под Node.js или просто наводит порядок на захламлённом диске. Она позволяет «обмануть» старые программы, которые не умеют работать с сетевыми путями, и перенести тяжёлые папки (например, AppData или базы 1С) на SSD, не ломая структуру. Давайте разберём этот инструмент по винтикам.



СИНТАКСИС

mklink [[/D] [/H] | [/J]] <ссылка> <цель>

ОСНОВНЫЕ ОПЦИИ

ОпцияОписаниеПример
(без флагов)Создаёт символическую ссылку на файлmklink C:\link.txt D:\real.txt
/DСоздаёт символическую ссылку на каталогmklink /D C:\link D:\folder
/HСоздаёт жёсткую ссылку на файл (работает только в пределах одного тома)mklink /H C:\hard.txt D:\real.txt
/JСоздаёт соединение (junction) — аналог /D, но без прав администратора и работает с каталогамиmklink /J C:\junction D:\folder
/?Выводит справку по командеmklink /?

ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ

Перенос тяжёлой папки на SSD без потери пути

Допустим, ваша программа упорно пишет данные в C:\App\Data, а SSD у вас только на 120 ГБ. Переносим папку на HDD и создаём junction:

robocopy C:\App\Data D:\BigHDD\AppData /E /MOVE
mklink /J C:\App\Data D:\BigHDD\AppData

Программа продолжает думать, что работает с C:\App\Data, а физически данные льются на большой диск. Магия латуни!

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

У вас есть один nginx.conf, который должен быть доступен и в C:\nginx\conf\, и в D:\backup\configs\. Вместо копирования создаём symlink:

mklink D:\backup\configs\nginx.conf C:\nginx\conf\nginx.conf

Теперь редактируете в одном месте — изменения мгновенно видны в другом. Никаких «а какую версию я сегодня правил?»

Жёсткая ссылка для версионирования

Жёсткие ссылки (/H) — это когда два файла физически занимают одно место на диске. Полезно для бэкапов:

mklink /H D:\backup\database_v1.db C:\db\live.db

Удаляете live.dbdatabase_v1.db остаётся жив, потому что жёсткая ссылка хранит свой MFT-запись, а не путь. Это как паровой аккумулятор: даже если котёл разобрали, энергия в маховике сохраняется.

💡 Совет

По умолчанию создание символических ссылок (mklink без флагов и /D) требует прав администратора. Если вы устали каждый раз запускать CMD от имени Администратора, включите в Windows «Режим разработчика» (Settings → Update & Security → For Developers). После этого symlink’и сможет создавать кто угодно — как если бы вы сняли замок с главного парового распределителя.

⚡ Важно

/D против /J — в чём разница?
Оба флага создают ссылки на каталоги, но работают по-разному. /D (symlink) — это «настоящая» ссылка, которая может указывать на сетевой путь (\\server\share), но требует прав администратора. /J (junction) — это наследие Windows 2000, работает только локально, но не требует привилегий. Если сомневаетесь — берите /J: он надёжнее, как чугунная труба. Сетевой путь нужен? Тогда /D.

⚡ Важно

mklink /H создаёт ссылку на уровне файловой системы NTFS, поэтому цель и ссылка должны находиться на одном томе. Попытка сделать mklink /H C:\link.txt D:\real.txt закончится ошибкой. Это как пытаться соединить паровую машину Лондона с фабрикой в Манчестере одной трубой — физика не позволит.



⚙️ Машинное отделение ROADIT благодарит за прочтение.
Больше команд, шпаргалок и обзоров — на roadit.ru и в нашем Телеграф-канале.
📋 Все команды

Оставьте комментарий