В чем разница между точками соединения NTFS и символическими ссылками?

На высоком уровне единственное очевидное различие между точками соединения NTFS и Символьные ссылки заключается в том, что Junctions могут быть только каталоги, а SymLinks также могут быть нацелены на файлы.

Существуют ли другие различия между ними?

(Заметьте, я уже видел этот вопрос, и то, что я ищу, немного другое - этот вопрос ищет про и список, Я ищу набор технических отличий)

Ответ 1

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

enter image description here

** Заявление о разнице в скорости/сложности исходит из непроверенного утверждения в статье Википедии о точках повторной обработки NTFS (хорошее чтение). *


Другие сравнения ссылок NTFS

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

Взято отсюда (хорошее вступительное чтение)

enter image description here

Со страницы SS64 на MKLink

enter image description here


Отзывы о терминологии

Соединения - это точки повторной обработки (могут быть описаны как символические ссылки)

Соединения NTFS и символьные ссылки NTFS действительно делают то же самое одинаково (точки повторного анализа), за исключением вышеупомянутых различий в том, как они обрабатываются. Фактически, технически, Junction - это "символическая ссылка" в более общем смысле этого слова, и иногда документация может называть Junction символической ссылкой, как в данном случае. В таких случаях "символическая ссылка" не означает символическую ссылку NTFS, которая отличается от соединения (см. Ниже).

NTFS

Несмотря на то, что OP указывает это, стоит отметить, что "символическая ссылка" является очень общим термином, который не является специфическим для NTFS. Таким образом, чтобы быть точным, это сравнение касается соединений NTFS и символических ссылок NTFS.

Ответ 2

Места, которые я нахожу наиболее полезными для различий:

http://blogs.msdn.com/b/junfeng/archive/2006/04/15/576568.aspx

http://www.hanselman.com/blog/MoreOnVistaReparsePoints.aspx

Постулат: Symlink - это соединение в Windows, поскольку Symlink - это Hardlink в Unix.

http://en.wikipedia.org/wiki/Symbolic_link#Windows_7_.26_Vista_symbolic_link

Windows 7 и Windows Vista поддерживают символические ссылки для файлов и каталогов с помощью утилиты командной строки mklink. В отличие от точек соединения, символическая ссылка также может указывать на сетевой или удаленный сетевой узел сервера сообщений (SMB). Кроме того, реализация символической ссылки NTFS обеспечивает полную поддержку перекрестных ссылок файловой системы. Тем не менее, функциональность, обеспечивающая межсимвольные символические ссылки, требует, чтобы удаленная система также поддерживала их, что фактически ограничивает их поддержку Windows Vista и более поздних операционных систем Windows.

http://www.tuxera.com/community/ntfs-3g-advanced/junction-points-and-symbolic-links/

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

Ответ 3

Функционально, в окнах, когда они созданы, нет реальной разницы. Однако между ними существуют существенные различия в том, что они могут сделать. Коммутаторы могут использоваться только для создания ссылок на папки, как на одном диске, так и на разных дисках, но только если эти диски находятся в локальной системе (вы не можете создать ссылку для подключения к папке по сети.) Символьные ссылки однако, не имеют одинаковых ограничений. Символические ссылки могут использоваться для связи с файлами или папками, и эти файлы или папки могут быть расположены либо на одной системе (один диск или на разных дисках), либо на общем сетевом ресурсе и могут использовать символику относительного местоположения ( "\\ system2\foldera\file.txt", "d:\foldera\file.txt", "\\system2\foldera", "d:\foldera" или "d:\foldera\folderb.." с результирующей ссылкой для последние 2 примера являются одним и тем же местом.) Символом относительной локации может быть ".", "..", текущая относительная функция привода (если текущий диск равен c:, а затем задание "\ tempa\folderb" приводит к ссылке на c:\tempa\folderb,) и текущий каталог relative (если текущий каталог - d:\foldera\folderb, то указание "d: file.txt" приводит к ссылке на d:\foldera\folderb\file.txt.)

Подводя итог: точки воссоединения ограничены только папками в локальной системе, в то время как Symbolic Links могут создавать ссылки на папки или файлы, доступные через UNC-путь или в локальной системе, с большей универсальностью в том, как эти места обозначены. Символические ссылки в основном являются более универсальной заменой как для точек соединения, так и для жестких ссылок. Кроме того, Symbolic Links совместимы с Unix и Linux при создании кросс-платформенной UNC-ссылки.

Надеюсь, это ответ на ваш вопрос удовлетворительным образом. Отредактировано для исправления типографских ошибок.

Ответ 4

Link Shell Extension, http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html, является отличным инструментом для создания и просмотра многих видов ссылок. Он также имеет отличную документацию.

[При полной установке добавляет новую вкладку свойств, если вы просматриваете расширенную ссылку. Кроме того, добавляются стрелки-оверлеи для различных типов ссылок - прокрутите до раздела часто задаваемых вопросов, если они не отображаются; Windows поддерживает только тринадцать накладок; он показывает способ обхода реестра. Пример его информационной полезности: безуспешно пытается получить привилегии на то, что вы считали папкой, но на самом деле это системная ссылка Junction Link, часто используемая для совместимости с более старыми версиями Windows.]

Связи и символические ссылки действуют по существу идентично при создании для каталога в локальной системе.

Тем не мение:

Они действуют по-разному по сети. Эта ссылка описывает это поведение: https://superuser.com/questions/343074/directory-junction-vs-directory-symbolic-link

Если вы считаете, что Junction Links являются "ярлыками, которые обманывают ОС по отношению к местоположению", у вас будет хорошее практическое сравнение их использования и что их нарушает. Основное отличие состоит в том, что если вы копируете символические ссылки или переходы, он копирует цель, скорее (например, ярлыки), только файл, содержащий указатель. Как и с ярлыками, вы можете удалить символические или соединительные ссылки, не удаляя целевые файлы/папки. [Hard Links, файл удаляется только с удалением последней ссылки, в том числе из корзины. Посмотрите на тег свойств в LSE для любой из этих ссылок, чтобы увидеть цель или счетчик ссылок для жестких ссылок.]

Жесткие ссылки или ярлыки - это единственные типы ссылок, которые можно перемещать без побочных эффектов, таких как разрыв или копирование всей цели. Перемещение цели всегда разрывает ссылки, хотя их можно легко обновить на вкладке свойств (показано с помощью LSE) или повторно создать, если это сложно, с LSE.

Для создания символических ссылок требуются привилегии администратора, а Junctions - нет. Это плюс обширное внутреннее использование ОС в Junctions предполагает, что Windows обрабатывает их интуитивно, ожидаемым образом. [Будьте осторожны с неожиданными побочными эффектами из системных папок (из опыта работы с Win 10).]

[Некоторые из особенностей резервного копирования Link Shell Extension чрезвычайно полезны - короче говоря, он может создавать несколько типов обновляемых символических структур ссылок в стандартных папках для ожидающих целей резервного копирования.]

Ответ 5

Символьные ссылки были введены совсем недавно в Windows: как с Vista.

Символические ссылки не следует рассматривать как альтернативу существующей технологии NTFS "Повторная точка".

Microsoft объясняет, что единственная цель символических ссылок - быть более совместимой с Unix.

MSDN: "Символические ссылки были разработаны для поддержки миграции и совместимости приложений с UNIX. Microsoft реализовала свои символические ссылки для работы так же, как ссылки UNIX".

Vista также является хорошей операционной системой для использования ссылок для собственного функционирования. Чтобы быть совместимым с именами старых версий, C:\Documents and Settings теперь является ссылкой на C:\Users.

Интересно, что хотя Vista вводит символические ссылки, этот трюк "Documents and Settings" на самом деле является простым старым соединением.

Ответ 6

В дополнение к отличному ответу от u8it:

Если кого-то интересует разница в поведении в проводнике Windows в Windows 10:

перетащите в целевой каталог:

  • symbolic link: перемещает symbolic link в целевой каталог
  • junction: перемещает original directory в целевой каталог

щелчок правой кнопкой мыши + свойства:

  • symbolic link: показывает свойства ярлыка
  • junction: показывает original directory свойства папки original directory

щелкните левой кнопкой мыши на левой панели (дерево каталогов):

  • symbolic link: выбирает original directory
  • junction: выбирает junction