2012-01-28 2 views
79

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

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

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

ответ

33

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

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

+1

Для конкретной Windows 7: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365006(v=vs.85).aspx –

+10

Принятый ответ уже три года, но я хотел бы отметить, что точки соединения NFTS не сравниваются с жесткими ссылками в Unix, что подразумевается в цитированном постулате. Это должно быть очевидно, поскольку точка соединения не может ссылаться на файл, но может быть жесткой. NTFS также поддерживает жесткие ссылки (которые отличаются от соединений), и они более или менее сопоставимы с жесткими ссылками Unix. – elgonzo

+0

@elgonzo Полностью согласен. AFAIK жесткая ссылка Unix может ссылаться только на файл, поэтому он вообще не похож на соединение с файловой системой NTFS. –

4

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

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

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

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

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

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

+1

Этот ответ ничего не говорит о различиях между символическими ссылками и переходами. (Как таковой, я не думаю, что это действительно относится к этому вопросу вообще) –

+0

С Windows Vista и далее Символическая ссылка заменяет Junctions (также, как мы знаем, оба являются точками повторной обработки) – Aravind

14

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

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

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

7

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 предполагает, что Windows обрабатывает их интуитивно, ожидаемым образом. [Остерегайтесь неожиданных побочных эффектов из системных папок (из опыта работы с Win 10).]

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

+0

можете ли вы сузить свой ответ? – manetsus

+0

Это отличный ответ ... сузить, почему? Это единственный ответ, который, как представляется, исходит из личных знаний/опыта, а не из краткого обзора Google. – u8it

+0

И ссылка Shell Extension выглядит как отличный инструмент. Существует также связанная с этим легкая утилита под названием [ln.exe] (http://schinagl.priv.at/nt/ln/ln.html#deloreancopy) ... даже если вы ее не используете, вы узнаете очень просто от чтения простого руководства пользователя. – u8it

7

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

enter image description here

** Заявление разница в скорости/сложности возникают из непроверенного заявления в Wikipedia entry on NTFS reparse points (хорошо читать). *


Другие NTFS Link Сравнения

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

Taken from here (хорошее вводное чтение)

enter image description here

От SS64 page on MKLink

enter image description here


Комментариев о терминологии

Перекрестки являются символическими ссылками

перекрестки и символические ссылки действительно делают то же самое, таким же образом (Reparse баллов), за исключением упомянутых выше различий в том, как они обрабатываются. Фактически, технически соединение Junction является символическим, и иногда документация может называть Junction символической ссылкой, as is the case here. Итак, это просто то, что нужно знать о терминологии.

NTFS

Несмотря на то, что ОП указывает на это, стоит отметить, что «символическая связь» является очень общий термин, который не является специфичным для NTFS. Так что, если быть конкретным, это сравнение относится к NTFS Unctions vs. NTFS Symbolic Links.