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

22
задан KronoS
13.01.2023 20:28 Количество просмотров материала 2689
Распечатать страницу

5 ответов

файлы данных NTFS хранятся со всеми их атрибутами в виде "inode" с идентификатором, а имена файлов указывают на inode. Все файлы имеют одну + жесткую ссылку. некоторые инструменты могут создавать дополнительные имена (жесткие ссылки), которые указывают на тот же inode, который имеет счетчик количества имен, указывающих на него. Если число равно нулю, операционная система удаляет файл, индексный дескриптор.

специальные инструменты, такие как LN, могут создавать дополнительные имена файлов, которые указывают на существующие inode, используя имя файла, которое указывает на них. Обратите внимание, что все атрибуты файла, включая даты и время хранятся в иноде, а не именем.

(дополнительные) жесткие ссылки полезны, когда вы хотите, чтобы разные имена указывали на одни и те же данные, чтение или запись. Они сохраняют космос и накладные расходы. Однако, они clobber программы которые принимают по-разному имена указывают к по-разному данным. e.g, Если вы заменили ссылки на дубликаты файлов жесткими ссылками на один файл, то вы удалили любую резервную копию! ОС windows-это одна программа, которая предполагается, что разные имена указывают на разные наборы битов.

жесткие ссылки должны быть на одном физическом и логическом томе.

Они полезны для:

  • сокращение длины пути, так как Windows поддерживает только 256 символов или около того.

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

точки соединения более грязные и используют точки повторной обработки (которые я не понимаю). Они могут указывать на разные физические или логические тома, но должны находиться на одном компьютере. Они, по-видимому, могут использоваться как символические ссылки для каталогов, позволяя второе имя для того же назначения, но ограничено одним компьютером, а не только одним томом.

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

те же предостережения, тоже! Многие программы имеют разные имена = разные файлы.

, а затем есть символические ссылки (которые могут идти по сетям), ярлыки и PIFs И.....

также некоторая информация от самой Microsoft:

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

30
отвечен Forethinker 2023-01-15 04:16

Быстрая Определения:

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

Жесткий Ссылке: ссылка на файл только на том же томе (буква диска). Каждый файл (данные файла) имеет как минимум 1 жесткую ссылку (имя файла). Удаление всех жестких ссылок приводит к удалению файла.

Junction: ссылка в каталог на том же или другом томе (буква диска), но не удаленный каталог.


детали:

предполагая, что вы работаете с томами 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] "соединение каталогов" vs "символический каталог ссылка"?

38
отвечен moo 2023-01-15 06:33

жесткая ссылка - это просто другое имя файла. Если у вас есть файл с именем A.txt и у вас есть ссылка L.txt, после удаления A.txt, вы по-прежнему будете иметь доступ к его данным через L.txt. Только когда оба удаляются файл ушел.

с другой стороны, у вас есть так называемая soft-link (соединение, если это папка или символьная ссылка, Если это файл). В том случае, когда вы удаляете A.txt файл действительно исчез. Удаление L.txt не влияет на файл какого-либо.

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

П. С. файлов и папок в основном взаимозаменяемы как в NTFS идет.

9
отвечен Josip Medved 2023-01-15 08:50

жесткий ссылке: только работа для такого же Тома.

Junction: любой локальный том

символично: локальный том или 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:\Users\All
  • C:\Users\Default Пользователь

действительны.

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 ERA папки по-прежнему существуют сегодня:

| 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         |
0
отвечен Ian Boyd 2023-01-15 11:07

ответить программно:

жесткая ссылка: shared_ptr<>. Он всегда существует.

мягкая ссылка: weak_ptr<>. Допустимо только при наличии другой жесткой ссылки.

-1
отвечен Michael 2023-01-15 13:24

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх