Яка різниця між жорсткими посиланнями NTFS та з'єднаннями каталогів?


79

У заголовку все сказано ... яка різниця? Коли я використовую одну, а коли іншу?

Додано: Зауважте, що точки з'єднання , жорсткі та символічні (м'які) посилання - це три окремі речі на NTFS.


2
Відповідно до документації Microsoft, існує три різних категорії: Жорстке посилання: msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; З'єднання (софт-посилання): msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx ; Символічне посилання: msdn.microsoft.com/en-us/library/aa363878%28VS.85%29.aspx .
Йосип Медвед

Відповіді:


33

Файли даних NTFS зберігаються з усіма їх атрибутами як "inode" з ідентифікатором, а назви файлів вказують на inode. Усі файли мають одне + жорстке посилання. деякі інструменти можуть створювати додаткові імена (жорсткі посилання), які вказують на той самий inode, який має лічильник кількості імен, що вказують на нього. Якщо число переходить до нуля, ОС видаляє файл, inode.

Спеціальні інструменти, як-от LN, можуть створювати додаткові назви файлів, які вказують на існуючі вводи, використовуючи ім'я файлу, яке вказує на них. Зауважте, що всі атрибути файлу, включаючи дати та час, зберігаються разом із inode, а не ім'ям файлу.

(Додаткові) жорсткі посилання корисні, коли ви хочете, щоб різні імена вказували на однакові дані, читали чи писали. Вони економлять простір і накладні витрати. Однак, програми, які припускають різні назви, вказують на різні дані. наприклад, якщо ви замінюєте посилання на дублюючі файли жорсткими посиланнями на один файл, ви видалили будь-яку резервну копію! ОС Windows - це одна програма, яка передбачає, що різні назви вказують на різні набори бітів.

Жорсткі посилання повинні мати однаковий фізичний та логічний обсяг.

Вони корисні для:

  • зменшення довжини шляху, оскільки Windows підтримує лише 256 символів.

  • зменшення простору зберігання дублікатів файлів даних - наприклад, у вас може бути кілька резервних копій розділу з кількома повними деревами каталогів, але з жорсткими посиланнями на файли, які не змінилися з попередньої резервної копії.

Точки з’єднання є найменшими і використовують точки повторного аналізу (що я не розумію). Вони можуть вказувати на різні фізичні чи логічні обсяги, але вони повинні бути на одному комп’ютері. Вони, мабуть, можуть використовуватися як символьні посилання для каталогів, дозволяючи друге ім’я для того ж пункту призначення, але обмежується одним комп'ютером, а не лише одним томом.

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

Такі ж застереження! Багато програм мають різні назви = різні файли.

А потім є символічні посилання (які можуть переходити по мережах), ярлики та PIF та .....

Також деяку інформацію від самого Microsoft :

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


1
Чи працює символічне посилання на рівні жорсткого диска (NTFS) чи це на рівні рівня операційної системи Windows?
Ісмаїл

48

Швидкі визначення:

Символічне посилання: посилання на файл або каталог з однаковим або різним обсягом (літера диска) або навіть на віддалений файл або каталог (використовуючи UNC на своєму шляху).

Жорстке посилання: посилання на файл лише того самого обсягу (літера диска). Кожен файл (дані файлу) має щонайменше 1 жорстке посилання (ім'я файлу). Видалення всіх жорстких посилань ефективно видаляє файл.

З'єднання: посилання на каталог, що має той самий або інший об'єм (літера диска), але не на віддалений каталог.


Деталі:

Якщо припустити, що ви працюєте з томами NTFS в Windows Vista / 7, ви можете використовувати інструмент командного рядка MKLINK для створення всіх трьох типів посилань:

MKLINK [[/D] | [/H] | [/J]] Link Target

        /D      Creates a directory symbolic link.  Default is 
                a file symbolic link.

        /H      Creates a hard link instead of a symbolic link.

        /J      Creates a Directory Junction.

        Link    specifies the new symbolic link name.

        Target  specifies the path (relative or absolute) that 
                the new link refers to.

Символічні посилання : Символічне посилання - це об'єкт файлової системи, який вказує на інший об'єкт файлової системи (наприклад, файл / каталог).

  • MKLINKможе використовуватися для створення символічних посилань. За допомогою /Dпараметра створюється каталог символічного посилання. MKLINK не перевіряє, чи є ціль файлом чи каталогом або навіть, якщо ціль існує! Це означає, що ви можете потенційно створювати недійсні посилання, наприклад символічне посилання на файл або символічне посилання на неіснуючий файл / каталог.

  • Символічні посилання можуть бути абсолютними або відносними. Абсолютні посилання - це посилання, які задають кожну частину назви шляху, тоді як відносні посилання визначаються відносно того, де специфікатори відносних посилань знаходяться у визначеному шляху.

  • Абсолютні символьні посилання можуть вказувати на файли / каталоги з однаковим або різним обсягом, а також на віддалений файл або каталог, використовуючи шлях UNC. Однак відносні символічні посилання обмежені одним томом.

  • Підвищені привілеї необхідні для створення символічного посилання, хоча колись створені підвищені привілеї не потрібно видаляти посилання.

Постійні посилання : жорстке посилання - це представлення файлової системи файлу, в якому більше одного шляху посилається на один файл.

  • MKLINKдозволяє створювати жорсткі посилання (використовуючи /Hпараметр) лише файлів (а не каталогів). Жорстке посилання може бути створене лише з файлу в тому ж обсязі.

  • Файл з кількома жорсткими посиланнями видаляється фактично лише тоді, коли всі жорсткі посилання видалені, тобто кількість посилань досягає нуля. Тож справді кожен створений файл має принаймні одне тверде посилання на нього, використовуєте ви MKLINKчи ні.

  • Будь-які зміни цього файлу миттєво помітні для програм, які отримують доступ до нього через жорсткі посилання, на які посилаються. Однак розмір вступу в каталозі та інформація про атрибути оновлюються лише для посилання, через яке було внесено зміни.

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

З'єднання : З'єднання (його також називають м'яким посиланням) відрізняється від жорсткого посилання тим, що об'єкти зберігання, на які він посилається, є окремими каталогами, а з'єднання може пов'язувати каталоги, розташовані в різних локальних томах на одному комп’ютері. В іншому випадку переходи діють однаково з жорсткими зв язками. З'єднання реалізуються через точки повторного розбору.

  • MKLINKдозволяє створити з'єднання (за допомогою /Jпараметра) каталогу (і навіть файлів, хоча це, мабуть, слід вважати недійсним посиланням).

  • З'єднання можна розглядати як еквівалент жорсткого посилання для символічного посилання на каталог. Зв'язок не може бути створений до віддаленого каталогу, але може бути створений до каталогу з тим же / іншим томом.


Список літератури:

[1] Жорсткі посилання та з'єднання: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365006%28v=vs.85%29.aspx

[2] Створення символічних посилань: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363878%28v=vs.85%29.aspx

[3] "каталог з'єднання" проти "каталог символічне посилання"?


9

Жорстке посилання - це лише інша назва файлу. Якщо у вас є файл з назвою A.txt і у вас є посилання L.txt, після видалення A.txt ви все одно отримаєте доступ до його даних через L.txt. Тільки тоді, коли обидва видалені, файл зник.

З іншого боку, у вас є так звана soft-link (з'єднання, якщо це папка або символічне посилання, якщо воно є файлом). У такому випадку, коли ви видаляєте A.txt, файл дійсно відсутній. Видалення L.txt не впливає на файл що-коли-небудь.

Жорсткі посилання можуть бути використані лише на тому самому розділі, що і вихідний файл, а м'які посилання можна використовувати в усіх розділах.

Файл і папка PS в основному взаємозамінні, наскільки йде NTFS.


3
Вибачте, з'єднання та м'які посилання - це не одне і те ж саме для NTFS. :(
Vilx-

2
msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx Цитата: "З'єднання (також його називають м'яким посиланням)"
Йосип Медвед

3
Однак є додаткове розмежування між з'єднанням (він же софт-ланка) і символічним посиланням, але я тут не вдавався в деталі. Для зацікавлених людей детальну інформацію можна знайти в документації на Windows за адресою msdn.microsoft.com/en-us/library/aa365006%28VS.85%29.aspx та msdn.microsoft.com/en-us/library/aa363878%28VS. 85% 29.асп .
Йосип Медведь

1
Починаючи з Windows Vista, існують як з'єднання NTFS (можна вказати лише на каталоги), так і символьні посилання в стилі Unix (можуть вказувати буквально на що завгодно).
grawity

0

Жорстке посилання: працюйте лише на той же обсяг
З'єднання: будь-який локальний том
Символічний: локальний том або шлях UNC

| Link Type     | Same Volume | Different Volume | UNC Path |
|---------------|-------------|------------------|----------|
| Hard link     | Yes         | No               | No       |
| Junction      | Yes         | Yes              | No       |
| Symbolic link | Yes         | Yes              | Yes      |

Бонусна балаканина

Windows створюють з'єднання та символічні посилання для цілей AppCompat; для тих погано написаних додатків, які думають:

  • C: \ Користувачі \ Усі користувачі
  • C: \ Користувачі \ Користувач за замовчуванням

чинні.

C:\Users>dir /as

 Directory of C:\Users

04/11/2018  07:45 PM    <SYMLINKD>     All Users [C:\ProgramData]
04/11/2018  07:45 PM    <JUNCTION>     Default User [C:\Users\Default]

Те саме стосується папки профілю користувача для програм, які очікують існування папок епохи Windows XP сьогодні:

| Folder           | Type       | Target                                                           |
|------------------|------------|------------------------------------------------------------------|    | Application Data | <JUNCTION> | C:\Users\Ian\AppData\Roaming                                     |
| Cookies          | <JUNCTION> | C:\Users\Ian\AppData\Local\Microsoft\Windows\INetCookies         |
| Local Settings   | <JUNCTION> | C:\Users\Ian\AppData\Local                                       |
| My Documents     | <JUNCTION> | C:\Users\Ian\Documents                                           |
| NetHood          | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Network Shortcuts |
| PrintHood        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Printer Shortcuts |
| Recent           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Recent            |
| SendTo           | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\SendTo            |
| Start Menu       | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Start Menu        |
| Templates        | <JUNCTION> | C:\Users\Ian\AppData\Roaming\Microsoft\Windows\Templates         |

1
і стає ще божевільнішим від установок, які не є англійськими вікнами, оскільки тоді ви отримуєте ВІДНОШЕ символіки / переходи, оскільки деякі можуть або не можуть знати Windows до XP насправді мали місцеві dirname, які легко можуть зіпсувати сценарії чи підручники, зроблені для інших мов. Vista вбив, що замість цього використовує локалізовані імена DISPLAY, тому фактичні шляхи однакові на всіх мовах, але завдяки локалізованим вікнам у них є навіть більше посилань, ніж англійські
My1

-1

Щоб відповісти програмно:

Постійне посилання: shared_ptr <>. Завжди один існує.

М'яке посилання: слабкий_птр <>. Діє лише тоді, коли існує інше жорстке посилання.


Це найпростіше. :) Питання стосувалось Hard Links vs Junctions. ;)
Vilx-
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.