07-08-2023
Жёсткой ссылкой (англ. hard link) в UFS-совместимых файловых системах называется структурная составляющая файла — описывающий его элемент каталога.
Файл в UFS представляет собой структуру блоков данных на диске, имеющую уникальный индексный дескриптор (или i-node) и набор атрибутов (метаинформацию). Жёсткая ссылка связывает индексный дескриптор файла с каталогом и дает ему имя.
Содержание |
У файла может быть несколько жёстких ссылок: в таком случае он будет фигурировать на диске одновременно в различных каталогах и/или под различными именами.
Количество жёстких ссылок файла сохраняется на уровне файловой системы в метаинформации. Файлы с нулевым количеством ссылок перестают существовать для системы и, со временем, будут перезаписаны физически. В файловых системах unix-подобных ОС и NTFS при создании файла на него автоматически создаётся одна жёсткая ссылка (на то место файловой системы, в котором файл создаётся). Дополнительную ссылку можно создать с помощью команды ln. Все ссылки одного файла равноправны и неотличимы друг от друга — нельзя сказать, что файл существует в таком-то каталоге, а в других местах есть лишь их копии. Удаление любой из ссылок приводит к удалению файла лишь в том случае, когда удалены все остальные жёсткие ссылки на него.
Большинство программ не различают жёсткие ссылки одного файла, даже системный вызов для удаления файла в UNIX называется unlink (англ.)русск., так как он предназначен для удаления жёсткой ссылки файла.
В связи с тем, что жёсткие ссылки ссылаются на индексный дескриптор, уникальный в пределах дискового раздела, создание жёсткой ссылки на файл в каталоге другого раздела невозможно. Для преодоления этого ограничения используются символьные ссылки.
В файловой системе NTFS (начиная с Windows NT4[1]) поддерживаются жёсткие ссылки. Жёсткая ссылка может создаваться только в пределах одного логического раздела и только для файлов. В операционных системах Windows нет возможности создать жесткую ссылку на директорию. Однако похожего эффекта можно добиться используя NTFS junction point.
Команда для создания жёсткой ссылки в Windows:
fsutil hardlink create новая_ссылка источник
Пример:
fsutil hardlink create "C:\Distr\Installer-2.exe" "C:\Distr\Installer.exe"
обратите внимание — существующее имя файла идет вторым! А создаваемое — первым.
Также в Windows Vista появилась новая команда mklink. Команда для создания жёсткой ссылки на файл в операционной системе Windows 7:
mklink /h новая_ссылка источник
Пример:
mklink /h "C:\Distr\Installer-2.exe" "C:\Distr\Installer.exe"
Жёсткая ссылка.