Работаем с жёсткими и символическими ссылками в Windows

Пользователи Unix-подобных ОС привыкли к жёстким и символическим ссылкам. В Windows такой функционал есть, но для создания ссылки нужна командная строка. Сегодня мы разберёмся, как обойтись без консоли.

Файл в совместимых с UFS (Unix File System) файловых системах представляет собой размещённый на диске набор блоков, информация о котором хранится в таблице индексных дескрипторов (inode). Именно с ними работает операционная система, а имена файлов и каталогов можно рассматривать как нужные ради удобства пользователей ссылки на соответствующие inode. При этом у одного и того же объекта может быть несколько имён. Такие имена — это и есть жёсткие ссылки, или хардлинки (от англ. hard link), которые создаются в любом каталоге, но в пределах одной файловой системы (логического раздела). После удаления последнего хардлинка ОС удаляет запись в таблице индексных дескрипторов, и файл перестает существовать.

У символических ссылок, или симлинков (от англ. symbolic link), ограничений на размещение нет. Они представляют собой самостоятельные объекты, содержащие только текстовую строку с указателем пути к другому объекту. Цель ссылки может находиться где угодно или даже вовсе не существовать. При обращении к такому файлу, напоминающему ярлык Windows, но более простому по своему устройству, операционная система фактически работает с объектом, на который ссылается указатель.

Жёсткие ссылки появились в NTFS во времена NT4, а частичная поддержка симлинков — в Windows 2000 с NTFS 5. Символьные связи тогда создавались входящей в состав Microsoft Windows Resource Kit утилитой linkd и могли указывать только на каталоги, а для жёстких ссылок была доступна команда fsutil. В Windows Vista были уже полноценные symbolic links, создавались которые командой mklink (она же используется и для хардлинков).

Обойтись без командной строки возможно, но для этого потребуются сторонние продукты. Работу с жёсткими и символическими ссылками поддерживает, к примеру, популярная программа Total Commander через специальное расширение NTFS Links. Его можно использовать отдельно, но это довольно неудобно. Мы рассмотрим две программы, интегрирующиеся с «Проводником».

Скриншот с wincmd.ru

Набор расширений NTFS Link для Windows 2000 и выше (требуется версия NTFS, начиная с пятой) легко перепутать с предыдущей программой из-за похожих названий. Он распространяется на условиях GPL, добавляет соответствующие функции в «Проводник» и очень прост в использовании. Процесс установки описывать подробно не будем — пользователю нужно принять условия лицензии и ответить на несколько вопросов.

Русифицировать программу придется вручную. Для этого скачиваем с сайта архив с локализацией, распаковываем его и копируем директорию ru в подкаталог locale того каталога, куда установлена NTFS Link. После этого необходимо перезагрузить компьютер.

Создание жесткой ссылки на файл

Функционал NTFS Link несколько ограничен. С его помощью можно создавать жёсткие ссылки на файлы и символические — на каталоги. Вероятно, это связано с особенностями NTFS 5. Если начать перетаскивать объект в исходную или в другую директорию с зажатой правой кнопкой мыши, то, отпустив кнопку, вы увидите соответствующее контекстное меню. После создания ссылки она будет помечена специальным дополнительным значком.

Создание симлинка (узловой точки) для каталога

Важно понимать, что, работая с хардлинками, мы имеем дело с одним файлом и нет разницы, к какому объекту обращаться, скажем, для редактирования. Это избавляет нас от необходимости выделять дополнительное место для двух одинаковых файлов. Жёсткие ссылки можно копировать, перемещать и удалять независимо друг от друга — это не приведёт к изменению исходного объекта. Фактическое удаление файла происходит после того, как удалён последний hard link.

С символьными ссылками на каталоги ситуация иная. Они содержат только путь к объекту, и если его переместить или удалить, то симлинк будет вести в никуда. При попытке обращения к нему система выдаст ошибку. Очень похоже на привычные пользователям Windows ярлыки, но есть и серьёзное отличие, которое можно увидеть на скриншоте, где в двух окнах «Проводника» открыт один и тот же каталог (напрямую и через линк). Обратите внимание: система видит разные пути, то есть с мягкой ссылкой можно работать как с самим каталогом (из любой программы или из командной строки). С ярлыком так не получится.

Каталог, открытый напрямую и через символическую ссылку

Разумеется, ссылку можно удалять, и это не приведёт к удалению каталога. По крайней мере, в современных ОС. Некоторые версии «Проводника» не могут корректно работать с символическими ссылками и при попытке их удаления стирают содержимое целевой директории, так что будьте осторожны.

Программа NTFS Link хороша своей простотой, но не поддерживает появившейся в Vista возможности создавать мягкие ссылки на файлы. В следующей части заметки мы подробно рассмотрим другой продукт — Link Shell Extension, более сложный, но лишённый этого недостатка.

— Продолжение статьи читайте здесь.

Что будем искать? Например,ChatGPT

Мы в социальных сетях