Пользователи 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. Его можно использовать отдельно, но это довольно неудобно. Мы рассмотрим две программы, интегрирующиеся с «Проводником».
Набор расширений NTFS Link для Windows 2000 и выше (требуется версия NTFS, начиная с пятой) легко перепутать с предыдущей программой из-за похожих названий. Он распространяется на условиях GPL, добавляет соответствующие функции в «Проводник» и очень прост в использовании. Процесс установки описывать подробно не будем — пользователю нужно принять условия лицензии и ответить на несколько вопросов.
Русифицировать программу придется вручную. Для этого скачиваем с сайта архив с локализацией, распаковываем его и копируем директорию ru в подкаталог locale того каталога, куда установлена NTFS Link. После этого необходимо перезагрузить компьютер.
Функционал NTFS Link несколько ограничен. С его помощью можно создавать жёсткие ссылки на файлы и символические — на каталоги. Вероятно, это связано с особенностями NTFS 5. Если начать перетаскивать объект в исходную или в другую директорию с зажатой правой кнопкой мыши, то, отпустив кнопку, вы увидите соответствующее контекстное меню. После создания ссылки она будет помечена специальным дополнительным значком.
Важно понимать, что, работая с хардлинками, мы имеем дело с одним файлом и нет разницы, к какому объекту обращаться, скажем, для редактирования. Это избавляет нас от необходимости выделять дополнительное место для двух одинаковых файлов. Жёсткие ссылки можно копировать, перемещать и удалять независимо друг от друга — это не приведёт к изменению исходного объекта. Фактическое удаление файла происходит после того, как удалён последний hard link.
С символьными ссылками на каталоги ситуация иная. Они содержат только путь к объекту, и если его переместить или удалить, то симлинк будет вести в никуда. При попытке обращения к нему система выдаст ошибку. Очень похоже на привычные пользователям Windows ярлыки, но есть и серьёзное отличие, которое можно увидеть на скриншоте, где в двух окнах «Проводника» открыт один и тот же каталог (напрямую и через линк). Обратите внимание: система видит разные пути, то есть с мягкой ссылкой можно работать как с самим каталогом (из любой программы или из командной строки). С ярлыком так не получится.
Разумеется, ссылку можно удалять, и это не приведёт к удалению каталога. По крайней мере, в современных ОС. Некоторые версии «Проводника» не могут корректно работать с символическими ссылками и при попытке их удаления стирают содержимое целевой директории, так что будьте осторожны.
Программа NTFS Link хороша своей простотой, но не поддерживает появившейся в Vista возможности создавать мягкие ссылки на файлы. В следующей части заметки мы подробно рассмотрим другой продукт — Link Shell Extension, более сложный, но лишённый этого недостатка.
— Продолжение статьи читайте здесь.