Символьные ссылки (Symbolic Link) – что они собой представляют и как их использовать практически

Термин «Symbolic Link» получил широкое распространение после выхода «Windows Vista», структура системных путей которой кардинально отличалась от предыдущих версий. Для совместимости с приложениями, поголовное большинство которых на тот момент не могло оптимально работать с новыми путями к пользовательским и системным каталогам, было введено большое количество специфичных объектов – точек соединения, расположенных в привычных местах, а также имеющих привычные имена. Их называют символическими ссылками. Впрочем перевод термина на русский язык не однозначен, поэтому одно понятие встречается в виде нескольких вариантов словосочетаний.

Что это такое

Это некие подобия обычных ярлыков, но с гораздо более расширенной функциональностью. Символическая ссылка образует совершенно полноценную связь с конечным объектом-целью – настолько полноценную, что системная оболочка не обращает особого внимания на разницу между реальным объектом и его имитацией.
Таким образом, любая программа может записывать или изменять свои вспомогательные файлы там, где ей положено «по умолчанию», но фактически они будут располагаться совершенно в другом месте.

Сравнение разновидностей ссылок

Для примера возьмем символьные связи, создаваемые самой системой. Откроем контейнер пользовательского профиля и включим отображение скрытых элементов (Виндоус 10 – команда на ленте, Виндоус 7 – через «Параметры папки»). Для наглядности сгруппируем элементы по их атрибутам.

Группа «HSDLI» собрала объекты, которые необходимы старым программам для совместимости с новыми версиями «Windows». Они относятся к символическим связям, но имеют более раннее происхождение и называются «Junction Point». Иными словами, их можно назвать подвидом символических ссылок, обладающим урезанными возможностями.

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

Рассмотрим свойства двух разновидностей символьных связей, сделанных для одного каталога «Roaming». Первая создана системой в виде «Junction Point», вторая сформирована пользователем и представляет собой «Symbolic Link».

Как видно на иллюстрации, во втором варианте присутствует вкладка «Ярлык», такая же, как у обычной иконки с Рабочего стола. Помимо этого в первом варианте отсутствует информация о пути к реальному хранилищу – цели ссылки. То есть, его свойства более близки к параметрам настоящей директории, а значит, воспринимаются Проводником точнее. Однако, это не значит, что со второй разновидностью возникают какие-либо проблемы – обе они выполняют свои функции одинаково хорошо.

Теперь зайдем в каталог «AppData», создадим простой ярлык для папки «Roaming» c именем «Application Data», а затем переместим его в родительский каталог. Сгруппируем содержимое окна по типу.

Видно, что Проводник воспринимает ярлыком лишь тот объект, который таковым непосредственно и является – два других воспринимаются как директории.
Откроем «Свойства» обыкновенного ярлыка и сравним их с параметрами символической ссылки.

В 1-м случае заблокированных элементов нет, во 2-м – заблокировано все, кроме кнопки «Расположение файла» да поля с наименованием объекта на вкладке «Общие». Это говорит о том, что символьная связь формируется «намертво» – изменить в ней что-либо невозможно, за исключением имени. Если, например, переместить или переименовать целевой объект, соединение с ним пропадет, а система не сможет ее восстановить автоматически, как это бывает с простыми ярлыками.

Проведем для наглядности небольшой эксперимент.

Создадим папку с именем «А», а также символическую ссылку на нее, но под другим названием (Б), так как в противном случае это нам не удастся – невозможно сформировать 2 директории с одинаковыми именами. Теперь сотворим простой ярлык для этой же папки – его наименованием может стать как «А», так и «Б». Системе это безразлично, ибо она воспринимает их, как 2 совершенно разных элемента.

Далее переименуем исходную папку (АБ) и попробуем открыть его с помощью «Symbolic Link» (Б). Операция стала невозможной, так как путь к цели стал иным, а соединение с ней разорвалась. Теперь испытаем обычный ярлык – переход происходит без проблем. Активировав его «Свойства», можно увидеть, что первоначальный путь к хранилищу автоматически изменился.

Зачем операционной системе нужны эти точки соединения

Как уже было сказано выше, иерархическая структура системной оболочки стала кардинально отличаться от «Windows XP», а символьные связи, расставленные в нужных местах, успешно устраняют это отличие.
Сравним иерархию системных разделов «XP» и «10».

Не будем обращать внимания на наличие второго контейнера «Program Files» у 64-разрядной «Десятки», а вот каталоги «Users» и «ProgramData» – прямое подтверждение вышесказанного. Чтобы старые программы могли с ними взаимодействовать, пришлось внедрить длинную цепочку виртуальных переходов. Начинается она с соединительной точки «Documents and Settings», ибо старые версии «Windows» используют именно эту директорию для хранения профилей отдельных пользователей плюс общего для всех учетных записей профиля «All Users».

Следующее звено цепочки, это каталог «Users» – туда переносит ссылка. Откроем его и сравним с аналогом в «XP».

Здесь цепочка дробится на несколько ветвей, одна из которых начинает свой путь с виртуальной папки «All Users» (у старых версий она существует реально). Заходя сюда, мы попадаем в контейнер «ProgramData», а если там пройти по символьной ссылке «Application Data». То, как ни странно, попадем снова сюда же. Фантастика!

Однако для устаревших приложений эта петля необходима, так как они записывают свои данные по такому пути: C:\Documents and Settings\All Users\Application Data. Формируя виртуальные переходы, система формирует этот путь, но ведет он все же к реально существующему контейнеру «ProgramData».

Это одна ветвь. Другая – переносит из «Default User» в «Default». Остальные – внедрены в хранилища пользовательских профилей. Откроем один из них и посмотрим, что там нагромождено.

Видно, что для устранения различий, в «10-ке» присутствует огромное количество виртуальных переходов, возмещающих недостаток реальных хранилищ. Кстати, многие из них абсолютно не используются устаревшими приложениями, да и самими этими приложениями сейчас почти никто не пользуются. Так что непонятно, почему их до сих пор не исключили из структуры оболочки «Windows 10». Впрочем, удалить их самостоятельно не составляет труда. Можно смело удалять такие элементы, как:

  • Cookies
  • NetHood
  • PrintHood
  • Recent

Удаление точки соединения «SendTo» тоже ничего не изменит – операционной системе она абсолютно не нужна, а современные приложения используют другой путь.

С тем, как работают символические связи и зачем они нужны системе, мы похоже разобрались. Пора переходить к тому, как извлечь из них пользу.

Перенаправление папок при помощи символических ссылок

Небольшое вступление

К сожалению, почти никто не использует их функционала так, чтобы извлечь из этого действительно стоящую пользу. Все, на что хватает фантазии у большинства людей, это сократить путь к нужным хранилищам, сделать его более удобным. Мы же разберем возможность перенаправлять те директории, у которых нет встроенных средств для этого.

Перенаправление многих пользовательских директорий можно осуществить штатными средствами, но это всего лишь малая толика из того, что рекомендуется хранить в несистемном дисковом разделе. Каждая программа и утилита, которую вы запускаете (кроме портативных конечно), организовывает в контейнерах «Roaming» и «Local» (родительская директория – «AppData») свои собственные хранилища, где осуществляет запись/чтение данных, необходимых для сохранения настроек интерфейса, параметров работы, а также многого другого.

Все эти директории, естественно со всем их содержимым, в случае непредвиденной ситуации, влекущей за собой незапланированную переустановку Windows, будут безвозвратно утеряны, либо потребуется много времени и усилий, а также специальные средства, чтобы их скопировать до форматирования дискового раздела.

Если же перенаправить все хранилища программных настроек заблаговременно, то они будут защищены от потери, по крайней мере «с этой стороны». Но это не вся выгода – после переустановки ОС соединение с ними легко восстанавливается повторным созданием символьных связей.

Алгоритм действий

Для начала необходимо организовать базовый контейнер в другом разделе, свободном от каких-бы то ни было операционных систем. Чтобы было легко ориентироваться в будущем, лучше придать ему понятное наименование, а при создании в нем подпапок желательно соблюдать исходную иерархию.

Например, у нас есть несистемный том «Common (F:)». Назовем созданное в нем хранилище так же как и то, из которого мы будем перемещать папки (AppData), а для отличия добавим пробел да букву диска – «App Data (F)». Открыв созданный каталог, организуем там 2 подпапки:

  • Roaming. Сюда мы переместим папки из аналогичного контейнера системного тома (C:\Users\*Ваш профиль*\AppData\Roaming).
  • Local. Принцип использования тот же – соблюдаем иерархию, чтобы не было никакой путаницы.

Это место удобно использовать для всех перенаправленных хранилищ, то есть и для тех, что перенаправляются штатными средствами Проводника.

Теперь надо переместить нужные подпапки из «Roaming» диска C (пункт А) в «Roaming» диска F (пункт Б).

Перемещать директорию «Microsoft» нельзя, да это и не даст никакого полезного эффекта – там информация, которая в после переустановки системы не понадобится.

Когда операция полностью закончится, переходим в «пункт Б» и формируем символьные связи для всех перемещенных элементов. Сделать это можно при помощи командной строки, но дело это нудное и долгое, так как операции производятся для каждого объекта отдельно. Если же скачать и установить одну бесподобную утилиту, то на все операции потребуется лишь «пара кликов». Утилита бесплатная, работает как расширение системной оболочки, а называется – «FileMenu Tools» (доступна на сайте разработчика).

Будем считать, что она у вас уже есть и пойдем дальше:

  1. Выделяем все каталоги, делаем правый клик по любому из выделенных элементов, находим строку «FileMenu Tools», сдвигаем курсор на подменю и жмем команду «Создать символическую ссылку».
  2. Откроется диалог, где требуется выбрать пункт назначения да подтвердить операции (кнопка «OK»).
  3. Переходим обратно в «пункт А», и, при помощи одной из функций той же утилиты, изменяем атрибуты у созданных виртуальных каталогов. Необходимо придать им атрибут «Системный». Для этого их нужно опять же выделить, вызвать контекстное меню, найти строку «Атрибуты» в подменю «FileMenu Tools», а в ее подменю – команду «Системный».

Готово! Весь перечень выделенных объектов приобрел новые параметры. Осталось только повторить этот алгоритм действий с каталогами «Local».

Хранилище «Local» используется программами главным образом для различных кэшируемых данных, которые к настройкам не относятся и не имеют важного значения.

Исходя из вышесказанного, операции можно провести выборочно, лишь с теми хранилищами, которые содержат хоть какие-нибудь настраиваемые параметры. Например, некоторые браузеры, такие как «Google Chrome», располагаются именно здесь. Тут же хранятся и их настройки (профили). Также различные приложения «Adobe» записывают здесь не только кэшируемые данные, но и другую, более важную информацию.

Какие еще данные можно перенаправить таким образом

Офисный пакет

Контейнеры «Roaming» и «Local» имеют подпапки «Microsoft», которые не стоит трогать целиком, а вот некоторое внутреннее содержимое стоит перенаправить.

Это различные вспомогательные папки классического (не APPs) пакета «Microsoft Office», если конечно вы им пользуетесь:

  • Шаблоны. Содержит основной рабочий шаблон Normal.dotm, используемый редактором «WinWord» по умолчанию, а также темы.
  • UProof. Здесь хранятся пользовательские орфографические словари.
  • QuickStyles. Тут – шаблоны экспресс-стилей.
  • Office (Local). Содержат файлы настроек для всех приложений пакета и некоторые другие данные.

Чтобы обработать эти объекты, желательно использовать прежние правила – сначала создать аналогичные директории, соблюдая иерархию и идентичность наименований, а уж затем производить остальные операции.

Карты для автономного использования

Если вы скачивали карты каких-либо регионов через «Параметры», то все они хранятся локально по адресу C:\ProgramData\Microsoft\MapData.

Если переместить этот контейнер, а вместо него сотворить виртуальную имитацию, то в будущем легко будет восстановить утерянную связь и автономные карты не придется скачивать вновь.

Послесловие

Как видите, можно извлечь реальную пользу изо-всего, было бы желание. Понятно, что объектов для организации символьных связей может быть гораздо больше – это зависит от версии Windows, сетевого расположения компьютера, а также креативности пользователя. Например, у «Виндоус 7» можно перенести кэш драйверов (C:\Windows\System32\DriverStore\FileRepository). Для домашней сети таких возможностей вообще не перечесть.
В общем дело за вами.

WinNOTE
Добавить комментарий

  1. Пол Пот

    Крутая статья.

    Ответить