Ссылки в Windows – для чего они нужны?

Выбрать какую ссылку создать

Эта статья – одна их тех, которые я собирался писать годами, но всё руки не доходили. Не буду вокруг да около, в рамках челленджа нет места лени – буду писать!

Что такое ссылка

Со ссылками я познакомился ещё в Linux, тогда же они показались прикольным изобретением! И до недавнего времени я не знал, что ссылки есть и в Windows. Ну если не брать во внимание ярлыки – то хоть и похоже на ссылку, но всё-таки немного не то, о чём идёт речь.

Смысл ссылок становится понятен, когда немного разберёшься в том, как устроена файловая система. Что в общем виде объект “файл” ссылается на какой-либо кластер в файловой системе, в котором лежат его данные. Так вот, может быть так, что на один и тот же кластер ссылается более, чем один файл.

Какие бывают ссылки

Разумеется, ссылки бывают различных видов. Как и в системах на базе Linux.

Жёсткие ссылки

Действительны только в пределах одного раздела (это как раз тот тип, о котором я говорил – когда в MFT одна файловая запись указывает на тот же самый кластер, что и другая. Файл на диске живёт, пока есть хотя бы одна жёсткая ссылка на него. Ну и разумеется, работает только с файлами.

Символьные ссылки

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

Точки присоединения

Работают только с каталогами. Возможно вы сталкивались с возможностью создания точки присоединения в окне создания нового раздела:

Подключить том как папку
Подключить том как папку

Иначе говоря, можно одну папку отобразить на другую.

Чтобы это было понятно – вспомните, например, как в XP было “Documents and Settings”, а начиная с Windows 7 стало “Users”, но можно залезть на “Documents and Settings” (оставлено для совместимости) и попасть туда же… Также и ProgramData и ряд других специальных каталогов, которые являются ничем иным, как точками присоединения.

Зачем нужны ссылки

Исходя из видов ссылок вытекают и варианты их использования.

  1. Если на разделе заканчивается место, можно “перенести” части какой-либо тяжёлой программы/игры, указав соответственно символьные ссылки на новое место. Программа будет работать с файлами на другом разделе так же, как если бы они были у неё под боком.
  2. Если нужно открыть доступ только лишь к некоторым файлам на закрытом сетевом ресурсе и не хочется копировать эти файлы в общедоступный каталог – можно создать жёсткие ссылки на них в этом каталоге, унаследуя права доступа каталога файлы будут доступны, однако дисковое место не будет занято дублями.
  3. Можно обойти ограничение в 260 символов пути в Windows, об этом я уже писал тут.
  4. Да мало ли чего ещё может придумать мозг админа!

Примеры работы со ссылками

Для создания ссылок есть много различных программ. Я использую “Link Shell Extension“, для проводника Windows. Есть плагины для Total Commander, Far Manager и даже консольные программы.

После установки программы достаточно кликнуть правой кнопкой мыши на файловом объекте:

Запомнить источник ссылки
Запомнить источник ссылки

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

Выбрать какую ссылку создать
Выбрать какую ссылку создать

Готово! Вы – великолепны! :)

От Sysinternal есть неплохая утилитка – Junctions – хорошо работает с точками привязки. Работать с ней можно так (с правами администратора):
> junction64.exe "C:\Users\Dmitry\Music" "E:\Music"
Готово! Теперь наш каталог Music в профиле пользователя ссылается на другой жёсткий диск и соответствующий каталог “E:\Music”.

С помощью этой же программы можно перенести папки приложений, которые любят “забиваться” – например iTunes и т.д., из Application Data куда-нибудь, где побольше места, не забивая профиль пользователя.

Ну и немаловажно познакомиться с командой mklink в Windows:

Mklink штатная утилита
Mklink штатная утилита

Дополнение! Вот написал статью и уже через неделю пригодились знания – мелочь, а приятно. Поделюсь кейсом.

Было нужно заставить корректно работать одну программу, которая искала свою базу в каталоге P:\PROGA\BAZA (условно), но под буквой P: был сетевой диск, который ссылался на каталог P:\PROGA другого компьютера, там P – логический (на корень P$ не получилось сделать, хз почему).

Так вот, на обоих компах одна и та же прога. Пути к базам жёстко зашиты внутри, менять нельзя (прога под DOS). И вот на одном нужно заставить прогу видеть базу по родному пути P:\PROGA\BAZA, а на втором – по P:\BAZA, но чтобы она думала, что путь точно такой же.

Как решал:

Перешёл в каталог P:\PROGA и создал Junction Point с именем PROGA, который ссылается на “.” – текущую папку.

Таким образом первая прога видит свой путь без изменений по P:\PROGA\BAZA, а вторая – заходит на диск P:, заходит на Junction с именем PROGA (думая, что это каталог PROGA) и попадает снова на свой диск P: (думая, при этом, что она уже в P:\PROGA) и смело идёт дальше в BAZA.

В общем организовал небольшую петлю, но это сработало! И радости не было предела.

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Leave a Reply