В чем разница между точками соединения NTFS и символическими ссылками? - PullRequest
117 голосов
/ 28 января 2012

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

Какие еще различия существуют между этими двумя?

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

Ответы [ 6 ]

63 голосов
/ 02 февраля 2018

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

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.

34 голосов
/ 28 января 2012

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

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

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

Постулат: Symlink - это Junction в 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, очень похожа на соединение каталога, но в отличие от соединения каталога она может указывать на файл или файл или каталог удаленной сети. Цель может быть определена как путь относительно символической позиции ссылки или абсолютный путь в текущем томе или другой. Также обратите внимание, что символические ссылки на файлы отличаются от символических ссылок на каталоги, и цель должна соответствовать определению.

17 голосов
/ 02 февраля 2016

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

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

Надеемся, это удовлетворительно ответит на ваш вопрос.Отредактировано для исправления опечаток.

10 голосов
/ 02 апреля 2016

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 как «ярлыки, которые обманывают ОС в отношении местоположения», у вас будет хорошее практическое сравнение их использования и того, что их нарушает.Основное отличие состоит в том, что если вы копируете символические ссылки или соединения, он копирует цель, а не (как ярлыки), просто файл, содержащий указатель.Как и в случае с ярлыками, вы можете удалить символические или соединительные ссылки, не удаляя целевые файлы / папки.[Жесткие ссылки, файл удаляется только при удалении последней ссылки - в том числе и из корзины.Посмотрите на тег свойств в LSE для любой из этих ссылок, чтобы увидеть цель или счетчик ссылок для жестких ссылок.]

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

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

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

4 голосов
/ 01 мая 2012

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

Символические ссылки не должны рассматриваться как альтернатива существующей технологии NTFS «Reparse Point».

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

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

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

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

0 голосов
/ 10 июля 2019

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

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

drag & dropв целевой каталог:

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

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

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

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

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