Жесткие связи NTFS
Предположим, что у вас есть файл, который должен находиться одновременно во многих папках одного дерева. Каждая из копий этого файла занимает определенное место, что приводит к непроизводительному использованию дискового пространства. Кроме того, следует учитывать, что в одной из копий может быть сделано изменение. В этом случае необходимо обновить все копии файла, что может вылиться в долгую и утомительную операцию, в течение которой легко сделать ошибку.
Эту проблему можно решить с помощью жесткой связи (hard link) NTFS. Она позволяет в пределах одного тома создать для одного файла множество имен. Сам файл может находиться в одном месте. Жесткие связи могут быть распространены по всему дереву папки. В Windows XP и Windows Server 2003 имеется новая утилита – Fsutil.exe, позволяющая пользователям создавать произвольные жесткие связи между файлами. Утилита Linkd (см. ниже) позволяет создавать связи между папками. (Связи можно также создавать программно, воспользовавшись функцией CreateHardLink из kernel32.dll.) Рассмотрим пример. Следующая команда создает новый файл fiieNew.txt, который связан с существующим файлом fiiel.txt:
C:\>fsutil hardlink create C:\fileNew.txt C:\Texts\filel.txt Hardlink created for C:\fileNew.txt "===" C:\Texts\filel.txt
При обращении к любому из файлов вы увидите одно и то же содержимое.
Все жесткие связи находятся в одной записи MFT. Поэтому они имеют одинаковые атрибуты (время создания, безопасность и размер файла). При создании новой жесткой связи система добавляет информацию в поле имени записи MFT и увеличивает счетчик жестких связей. При каждом уничтожении жесткой связи удаляется соответствующий атрибут в поле имени, а счетчик жестких связей уменьшается на 1. После уничтожения последней жесткой связи счетчик жестких связей становится равен 0.