Яка різниця між сполучними пунктами NTFS та символічними посиланнями?


140

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

Які ще відмінності між ними існують?

(Зауважте, я вже бачив це запитання, і те, що я шукаю, є дещо іншим - це питання шукає список професіоналів, я шукаю набір технічних відмінностей)

Відповіді:


88

Символічні посилання мають більшу функціональність, тоді як стики майже здаються застарілою функцією через їх обмеження, але наслідки цих обмежень для безпеки є саме тим, чому перехід може бути переважнішим над символічним посиланням. Віддалене націлення робить символічні посилання більш функціональними, але також підвищує їх захисний профіль, тоді як стики безпечніші, оскільки вони обмежені локальними шляхами . Отже, якщо ви хочете локальне посилання і можете жити абсолютним шляхом, вам, мабуть, краще пройти з переходом; в іншому випадку розглянемо символічне посилання на його додаткові здібності.

введіть тут опис зображення

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


Інші порівняння посилань NTFS

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

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

введіть тут опис зображення

Зі сторінки SS64 на MKLink

введіть тут опис зображення


Коментарі про термінологію

З'єднання - це точки повторного аналізу (можуть бути описані як символьні посилання)

Зв'язки NTFS та символічні посилання NTFS дійсно роблять те саме так само (повторні точки), окрім вищезазначених відмінностей у тому, як вони обробляються. Насправді, технічно, З'єднання - це "символічна ланка" у більш загальному сенсі цього слова, а іноді документація може називати З'єднання символічним посиланням, як це має місце тут . У таких випадках "символічне посилання" не означає NTFS Symbolic Link, який відрізняється від стику (див. Нижче).

NTFS

Хоча ОП це визначає, варто зазначити, що "символічне посилання" - це дуже загальний термін, не характерний для NTFS. Отже, якщо бути конкретним, це порівняння стосується символів NTFS Junctions vs. NTFS.


Розмінні пункти та символічні посилання - це пункти повторного опромінення, але найчастіше сполучні пункти не є символічними посиланнями! Ой і стіл помиляється також з одного рахунку. Мета пункту з'єднання повинна існувати при створенні, але вона може бути видалена пізніше.
0xC0000022L

3
@ 0xC0000022L Так, ви праві, якщо ви говорите, що NTFS Junction не є символічним посиланням NTFS. Я бачу, як моє формулювання може бути неправильно зрозуміло, щоб сказати це. Я редагую, щоб уточнити, але справа в тому, що в цьому контексті "символічне посилання" відноситься до символічних посилань NTFS, які є конкретними реалізаціями більш загальної ідеї "символічної посилання", до якої також належать з'єднання. Ви перейшли за посиланням, яке я опублікував? Це не говорить про те, що NTFS-з'єднання є символічним посиланням NTFS, але термін "символічне посилання" може бути використаний для опису з'єднання.
u8it

досить справедливо, коли йдеться про концепцію, це може бути одним із способів подумати над цим. Але я дійсно думаю, що термін reparse point приносить концепцію додому, тому що це пояснює набагато більше того, що відбувається в NT-менеджері об'єктів, і що ця концепція виходить за рамки тих символічних посилань, які були в Unix, наприклад (де вони є звичайними файлами зі спеціальним прапором). І так, я чув, що точки з'єднання пояснюються як "посилання на каталоги".
0xC0000022L

@ 0xC0000022L Крім того, я не бачу помилки, про яку ви згадуєте про таблицю. Ви посилаєтесь на характеристику "Може вказати на неіснуючу ціль"? А ви кажете, що це неправильно хоча б при першому створенні розв’язки? Якщо ви впевнені, що це так у конкретних умовах (можливо, для Windows XP або через налаштування безпеки), я зауважу це, але за своїм досвідом та з документації (і я щойно підтвердив на Windows 10) перехід може завжди орієнтуйтеся на неіснуючий шлях, навіть при створенні ... можуть бути налаштування безпеки, які обмежують це.
u8it

З'єднання не є спадщиною. Вони реалізують точки кріплення (прив’язка / об'єм), а не символи. Коли шлях проаналізований у відкритому режимі, система запам'ятовує пройдені переходи, щоб оцінити відносні символьні посилання, які проходять точки кріплення. Ці траверси повинні обробляти з'єднання так, ніби це звичайний каталог, тоді як симпосилання аналізується як його цільовий шлях. Наприклад, скажіть "C: \ junction" і "C: \ symlink" як цільове "E: \ spam", так і відносне символьне посилання "E: \ spam \ egg.txt" target ".. \ egg.txt". Тоді "C: \ junction \ egg.txt" вирішується на "C: \ egg.txt", а "C: \ symlink \ egg.txt" переходить у "E: \ egg.txt".
Ерік Нд

35

Місця, які я вважаю найбільш корисними для відмінностей:

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


1
Для конкретної інформації для Windows 7: msdn.microsoft.com/en-us/library/windows/desktop/…
Джошуа Дрейк

14
Прийнятої відповіді вже три роки, але я хотів би зазначити, що точки з'єднання NFTS не порівнюються з жорсткими посиланнями в Unix, як це випливає з цитованого постулату. Це має бути очевидним, оскільки точка з'єднання не може посилатися на файл, але може бути жорстке посилання. NTFS також підтримує жорсткі посилання (які відрізняються від стиків), і вони більш-менш порівнянні з жорсткими посиланнями Unix.

@elgonzo Повністю згоден. Жорстке посилання AFAIK на Unix може посилатися лише на файл, тому він зовсім не схожий на з'єднання каталогу NTFS.
Франклін Ю

20

Функціонально у вікнах, щойно створені, немає реальної різниці. Однак між ними є суттєві відмінності в тому, що вони можуть зробити. З'єднання можна використовувати лише для створення посилань на папки або на одному і тому ж диску або на різних дисках, але тільки якщо ці накопичувачі знаходяться в локальній системі (не можна створити з'єднувальну посилання на папку по мережі.) Символічні посилання однак не мають однакових обмежень. Символічні посилання можуть використовуватися для посилання на файли чи папки, а ці файли або папки можуть бути розташовані або в одній і тій же системі (той же привід або на різних дисках), або в мережевій мережі та можуть використовувати відносну символіку розташування ("\\ system2 \ foldera \ file.txt "," d: \ foldera \ file.txt "," \\ system2 \ foldera "," d: \ foldera "або" d: \ foldera \ folderb .. "

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

Сподіваємось, це відповість на ваше запитання задовільно. Відредаговано для виправлення друкарських помилок.


10

Розширення оболонки посилань, http://schinagl.priv.at/nt/hardlinkshellext/hardlinkshellext.html , є чудовим інструментом для створення та перегляду багатьох видів посилань. Він також має чудову документацію.

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

З'єднання та символьні посилання діють по суті однаково, коли створені для каталогу в локальній системі.

Однак:

Вони діють по-різному в мережі. Це посилання описує таку поведінку: /superuser/343074/directory-junction-vs-directory-symbolic-link

Якщо ви вважаєте, що Junction Links є "ярликами, які обманюють ОС щодо місця розташування", ви матимете гарне практичне уявлення про їх використання та те, що їх порушує. Основна відмінність полягає в тому, що якщо ви копіюєте Symbolic Links або Junctions, вона копіює ціль, а скоріше (як ярлики) лише файл, що містить покажчик. Як і у випадку з ярликами, ви можете видалити символічні або сполучні посилання, не видаляючи цільові файли / папки. [Жорсткі посилання, файл видаляється лише при видаленні останнього посилання - у тому числі з кошика. Перегляньте тег властивостей у LSE для будь-якого з цих посилань, щоб побачити ціль або кількість посилань для жорстких посилань.]

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

Для створення символічних посилань потрібні привілеї адміністратора, тоді як з'єднання цього не роблять. Це плюс широке, внутрішнє використання ОС Junctions, говорить про те, що Windows обробляє їх інтуїтивно, очікуваним чином. [Будьте обережні до несподіваних побічних ефектів із системних папок (з досвіду роботи з Win 10).]

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


І Link Shell Extension виглядає як чудовий інструмент. Існує також пов’язана легка утиліта під назвою ln.exe ... навіть якщо ви не використовуєте жодної, ви дізнаєтесь багато нового, прочитавши простий посібник користувача на веб-сайті.
u8it

Я думаю, що ваша редакція від 2 квітня 2016 року зробила все менш зрозумілим, Клей. Я думаю, ти мав на увазі щось подібне: "Основна відмінність цих файлів від" ярликів "полягає в тому, що якщо ви ... копіює ціль, а не просто файл, який містить вказівник (що відбувається, якщо ви скопіюєте ярлик файл) "
Джон Кумбс

4

Символічні посилання були введені зовсім недавно в Windows: від Vista.

Символічні посилання не слід розглядати як альтернативу існуючій технології NTFS "Reparse Point".

Microsoft пояснює, що єдиною метою Symbolic-посилань є більш сумісна з Unix.

MSDN: " Символічні посилання були розроблені для сприяння міграції та сумісності додатків з UNIX. Microsoft реалізувала свої символічні посилання, щоб функціонувати так само, як UNIX посилання. "

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

Цікаво, що, хоча Vista вводить символічні посилання, цей Documents and Settingsтрюк насправді є простим старим стиком.


2
Ця відповідь нічого не говорить про відмінності між символічними зв’язками та стиками. (Як такий, я не думаю, що це взагалі стосується цього питання)
Біллі ONeal

З Windows Vista далі символічне посилання замінює стики (також, як ми знаємо, обидва є пунктами повторного розбору)
Aravind

2

Окрім відмінної відповіді від u8it:

Якщо когось цікавить різниця в поведінці в Windows File Explorer в Windows 10:

перетягування в цільовий каталог:

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

клацання правою кнопкою миші + властивості:

  • symbolic link: показує вам властивості ярлика
  • junction: показує вам original directoryвластивості папки

клацніть лівою кнопкою миші на лівій панелі (дерево каталогів):

  • symbolic link: вибирає original directory
  • junction: вибирає junction

Для створення символічних посилань потрібні привілеї адміністратора, тоді як з'єднання цього не роблять.
Jinjinov

Windows 10 Версія 10.0.17134.1130: Переміщення з'єднання в провіднику переміщує лише вміст оригінального каталогу. Клацання лівою кнопкою миші на дереві не вибирає оригінальний каталог.
SalgoMato
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.