MKLINK vs. Junction.exe

В SysInternals есть программа junction.exe, которая создает в Windows Junctions (например, точки повторной обработки , aka. Symlinks).

Однако Windows также поставляется с mklink, который, похоже, делает то же самое.

Есть ли существенная разница?

Я склонен полагать, что если у SysInternals есть своя программа, они увидели недостаток в стандартной программе MKLink.

сравнение

Программа junction Маркса Руссиновича была разработана с конкретной целью: создать (и удалить) точки соединения. Он поддерживался на протяжении многих лет, но до сих пор никаких новых функций не было. Последняя версия была выпущена 4 июля 2016 года.

Что касается mklink , это встроенная команда, доступная в Windows Vista и более поздних версиях. Он может создавать жесткие ссылки, точки соединения и символические ссылки. Специальная функция удаления не предусмотрена; Вы можете просто использовать команды del или rd , в зависимости от того, указывает ли ссылка на файл или каталог соответственно.


Немного истории

До Vista операционные системы Windows не обеспечивали способ создания точек соединения из коробки: вам либо пришлось получить копию официального набора ресурсов , либо использовать стороннюю программу, либо написать ее самостоятельно.

2000

Была выпущена первая версия инструмента junction . Цитируя официальный сайт:

Windows 2000 и выше поддерживает каталоги символических ссылок, где каталог служит символической ссылкой на другой каталог на компьютере. […]

К сожалению, в Windows нет инструментов для создания соединений – вам нужно приобрести комплект ресурсов Win2K Resource Kit, который поставляется с программой linkd для создания переходов. Поэтому я решил написать свой собственный инструмент для создания стыков: Junction .

Источник: Соединение

2005-06

Команда mklink была представлена ​​с Windows Vista во время ранней бета-фазы.

Это было доступно, так как официальная бета-версия 1 отправлена ​​27 июля 2005 года. Первоначально она могла создавать только символические ссылки и жесткие ссылки; Возможность создания точек соединения появилась позже с выпуском Community Technology Preview (CTP), выпущенным 19 декабря 2005 года.

По-видимому, команда осталась незамеченной до некоторого времени позже в 2006 году, когда она была впервые раскрыта. Вот самая ранняя ссылка, которую я смог найти:

Теперь вы можете создать символическую ссылку в Windows Vista.

 C:\test>ver Microsoft Windows [Version 6.0.5365] C:\test>mklink Creates a symbolic link. MKLINK [[/D] | [/H] | [/J]] Link Target [...] 

Источник: символическая ссылка в Windows Vista

Также:

Малкольм [MSFT] (Эксперт):
Q: Есть ли действительно простой способ сделать символическую ссылку?
A: Откройте CMD и введите «mklink». Этот инструмент позволит вам создавать переходы, жесткие ссылки и символические ссылки.

Источник: NTFS Beta Chat Transcript (12 июля 2006 г.)


Дополнительная информация

Файл или каталог может содержать точку повторной обработки, которая представляет собой набор пользовательских данных. Формат этих данных понимается приложением, которое хранит данные, и фильтром файловой системы, который вы устанавливаете, чтобы интерпретировать данные и обрабатывать файл.

Например, точки повторной обработки используются для реализации ссылок файловой системы NTFS и Microsoft Remote Storage Server (RSS).

Источник: пункты повторной проверки

В файловой системе NTFS поддерживается три типа ссылок на файлы: жесткие ссылки, переходы и символические ссылки.

Источник: Hard Links and Junctions

Жесткие ссылки

Жесткой ссылкой является представление файловой системы файла, в котором несколько путей ссылаются на один файл в том же томе. […] Любые изменения в этом файле мгновенно видны для приложений, которые обращаются к нему через жесткие ссылки, ссылающиеся на него. Однако размер записи каталога и информация об атрибутах обновляются только для ссылки, через которую было произведено изменение.

Источник: Hard Links and Junctions

Развязки

Соединение (также называемое soft link) отличается от жесткой ссылки тем, что объекты хранилища, которые он ссылается, являются отдельными каталогами, а соединение может связывать каталоги, расположенные на разных локальных томах на одном компьютере.

Источник: Hard Links and Junctions

Точки соединения могут связываться только с каталогами на локальном томе; Точки соединения с удаленными долями не поддерживаются.

Источник: точка соединения NTFS

Символические ссылки

Символьная ссылка представляет собой объект файловой системы, который указывает на другой объект файловой системы. Указанный объект называется целью.

Символические ссылки прозрачны для пользователей; Ссылки отображаются в виде обычных файлов или каталогов, и пользователь может действовать по-разному.

Источник: Символические ссылки

[Символические ссылки] были представлены с изменениями, внесенными в файловую систему NTFS с Windows Vista , но доступными через драйверы фильтров для Windows XP .

В отличие от точки соединения NTFS (доступной с Windows 2000), символическая ссылка также может указывать на сетевой или удаленный сетевой путь SMB . В то время как точки соединения NTFS поддерживают только абсолютные пути на локальных дисках, символические ссылки NTFS позволяют связывать с использованием относительных путей.

Параметры безопасности по умолчанию в Windows Vista / Windows 7 запрещают администраторам с невыполненными правами и всем не-администраторам создавать символические ссылки.

Источник: символическая ссылка NTFS

дальнейшее чтение

  • Жесткая ссылка
  • Символическая ссылка
  • Точка повторной обработки NTFS
  • Точка соединения NTFS
  • Символическая ссылка NTFS

Как уже упоминалось в комментариях, junction.exe вышел перед Vista / Winserver 2008, который пришел с командой mklink .

Поэтому нет смысла использовать его в Vista. Версии Windows старше Vista больше не поддерживаются.

Кроме того, junction.exe не поддерживает символические ссылки NTFS (только NTFS Junctions ), которые были представлены с помощью Vista / WinServer 2008 и команды mlink .

Давайте будем гением компьютера.