Как посмотреть символьные ссылки windows
Использование символических ссылок в Windows
Символическая ссылка (симлинк, символьная ссылка, Symbolic link) это специальный файл на файловой системе, которые сам не содержит данных, а является по сути ярлыком, указывающим на какой-то другой объект (файл или папку). При обращении к симлику операционная система считает, что это оригинальный файл (папка) и работает с ними совершенно прозрачно.
Символические ссылки используются в Windows довольно часто для системных файлов и каталогов. Пользователь может их применять, когда нужно перенести часть “тяжелых” файлов на другой диск, но чтобы Windows считала, что файлы все еще находятся в исходном каталоге (например в ситуациях, когда нужно экономить место на SSD, перенеся некоторые каталоги на более медленный и емкий SSD, не нарушая работоспособности программ). Можно использовать симлинки на SMB файловом сервере, когда каталоги с разных LUN должны быть доступны через одну точку входа.
В Windows есть три типа файловых ссылок для NTFS томов: жесткие, мягкие (симлинки), точки соединения (Junction point).
В подавляющем большинстве случаев вам будет достаточно функционала symbolic link, как наиболее универсального средства создания ссылки на любой объект.
Как создать символическую ссылку в Windows?
Для создания символических и жестких ссылок в Windows можно использовать встроенную утилиты mklink или PowerShell.
Синтаксис у утилиты mklink простой. Чтобы создать символическую ссылку на файл, нужно указать имя ссылки и целевой объект, на который она должна указывать. Можно указать тип ссылки: /D — символьная (мягкая) ссылка на каталог, /H — жесткая ссылка, /J – точка соединения (Junction point).
Создадим в каталоге C:\PS символическую ссылку на файл notepad.exe:
mklink C:\PS\note.exe c:\Windows\System32\notepad.exe
Должно появится сообщение:
Теперь для запуска процесса notepad.exe можно использовать символическую ссылку note.exe.
Теперь создадим в этом каталоге симлинк на другой каталог на этом же диcке:
mklink /D “C:\PS\Downloads” “C:\Users\user\Downloads”
Теперь при переходе в каталог C:\PS\Downloads вы будете видеть содержимое каталога, на который он ссылается.
Выведем содержимое каталога C:\PS:
Как вы видите, в атрибутах некоторых файлов указано, что это symlink/simlinkd. Также указан объект, на который они ссылаются. В Windows File Explorer симлинки отображаются с иконками ярлыков, а в их свойствах можно посмотреть целевой объект на который они ссылаются.
Также можно создать символически ссылки в Windows 10 с помощью PowerShell (в этом примере я использую относительные пути, чтобы создать символическую ссылку):
Можно создать символическую ссылку на сетевую папку на удаленном компьютере/сервере. Адрес сетевой папки нужно указывать в формате UNC. Следующий пример создаст симлинк на сетевой каталог на сервере:
mklink /D c:\ps\share \\mskfs01\Share
Например, подключим административную шару C$ с удаленного компьютера по IP адресу:
mklink /D c:\remotePC\server1 \\192.168.31.15\С$
Если при доступе к сетевой папке через симлинк, вы получили ошибку
проверьте разрешенные способы использования символических ссылок на вашем компьютере:
fsutil behavior query SymlinkEvaluation
Чтобы включить использование символических ссылок на удаленные ресурсы, выполните команды:
fsutil behavior set SymlinkEvaluation R2R:1
fsutil behavior set SymlinkEvaluation R2L:1
Вы можете работать с символическими ссылками, как с обычными объектами файловой системы, можно переименовать, переносить или удалить их. Система автоматически изменит настройки таких симлинков, чтобы они указывали на верные целевые объекты.
Для удаления симлинков используются обычные команды, как и для удаления файлов:
Del c:\ps\note.exe
RD c:\ps\downloads
Как найти и вывести все символические ссылки на диске?
В Windows нет простых инструментов для просмотра и управления всеми симлинками на диске.
Вы можете вывести список всех символических ссылок на диске с помощью команды:
dir /AL /S C:\ | find «SYMLINK»
Также можно вывести список всех символических ссылок на диске с помощью PowerShell. Для этого нужно просканировать все каталоги и найти NTFS объекты с атрибутом ReparsePoint:
Ссылки в Windows, символьные и не только
Предыстория
В своём топике «Впечатления от Яндекс.Субботника» хабрачеловек absolvo высказал удивление, что один из докладчиков не знал о том, что символьные ссылки есть и в Windows. Честно говоря, не знал этого и я, поэтому поинтересовался об этих ссылках в комментариях.
Думаю, то, что удалось выяснить, может показаться кому-нибудь полезным.
Сразу оговорюсь, что под ссылками в Windows я понимаю ссылки в NTFS. В FAT механизмов ссылок, насколько мне известно, предусмотрено не было.
Hard Links можно создавать только на файлы, Junction Points — только на директории, Symbolic Links — на файлы и директории. В дальнейшем под «жёсткими ссылками» подразумеваются Hard Links, под «символьными» — Junction Points и Symbolic Links.
Жёсткие ссылки действительны в пределах одного раздела, символьные — могут пересекать границы разделов. В связи с этим символьные ссылки могут поломаться, если структуру разделов поменять.
Не со всем, что поддерживается ядром, умеет нормально работать эксплорер. Будьте осторожны при использовании Junction Points в версиях Windows до Vista. При удалении Junction Point эксплорер может залезть внутрь директории, на которую ссылается Junction Point и поудалять там всё, а затем удалить Junction Point, хотя должен лишь удалить ссылку. Наверняка могут возникнуть проблемы и при перемещении или копировании Junction Point’ов.
Мне неизвестно, нормально ли в версиях Windows до Vista относятся к Junction Points стандартные утилиты типа rmdir.
Дополнительные материалы по теме
Отмечу англоязычную статью, в которой описаны нюансы использования ссылок и некоторые программы, позволяющие с ними работать. Статья устаревшая, так что в ней говорится только о Hard Links и Junction Points (причём на последние в статье нередко ссылаются, как на symbolic links. ).
По словам хабрачеловека SamDark, хорошее описание всех видов ссылок есть ещё в справке по NTFS Links (дополнению для Total Commander, см. ниже).
Теперь можно перейти к рассмотрению программ для работы со ссылками. Да-да, если вы не пользуетесь FAR (см. ниже), вам понадобятся отдельные программы. Все программы, перечисленные ниже, бесплатны.
Утилиты от Microsoft
Windows >= Vista
В Windows Vista добавили команду mklink для создания символьных и жёстких ссылок (спасибо за информацию хабрачеловеку metamorph).
Windows >= 2000
fsutil hardlink create ссылка файл
Создаёт Hard Link на файл (источник).
linkd ссылка директория
Создаёт Junction Point на директорию (источник). Утилита входит в Microsoft Windows Resources Kit.
Расширения для Explorer
NTFS Link интегрируется в Explorer и добавляет во всплывающее меню, появляюшееся после перетаскивания правой кнопкой мыши, пункты «Create junction point» и «Create hard link». Кроме того, она перехватывает вызовы Explorer’а, обеспечивая нормальное перемещение/копирование/удаление созданных ссылок.
NTFS Links (не путать с дополнением для Total Commander, см. ниже) — абсолютно аналогичная программа. Спасибо за комментарий хабрачеловеку vpbar.
Я рекомендую: Link Shell Extension — аналогичная программа, обладающая расширенным функционалом и очень подробным описанием. Спасибо за комментарий хабрачеловеку versia.
NTFS Links — дополнение для Total Commander
Страница программы (за информацию спасибо хабрачеловеку SamDark). Плагин может запускаться как отдельная программа, вне Total Commander’а.
Консольный файловый менеджер FAR уже давно поддерживает Hard Links и Junction Points «из коробки». Для создания ссылки используйте сочетание клавиш Alt-F6 😉 Спасибо за комментарий хабрачеловеку 4xis.
Junction Link Magic
Junction Link Magic — программа с графическим интерфейсом для создания, изменения и модификации Junction Points. Спасибо за комментарий хабрачеловеку vady.
Junction — консольная программа для создания Junction Points
UPD: обновил топик с учётом комментариев.
Проверка, на что указывает символическая ссылка в Windows 7
В Windows 7, как я могу проверить, является ли файл символической ссылкой или нет, является ли папка соединением или нет, и как я могу проверить, куда они указывают (в случае, если они являются символической ссылкой / соединением). И в проводнике, и в командной строке.
Очень важно иметь способ сделать это из командной строки, чтобы знать, как дублировать символические ссылки на другом компьютере, когда вы хотите создать точную копию дерева папок.
Если я щелкну правой кнопкой мыши по файлу и выберу «Свойства», я не смогу найти никаких признаков того, что это символическая ссылка.
Команда dir dir /a может сделать это:
Кроме того, вы можете использовать Windows Explorer:
fsutil reparsepoint query «folder name» | find «Symbolic Link» >nul && echo symbolic link found || echo No symbolic link
Пояснение :
Из MSDN о FSUtil: выполняет задачи, связанные с таблицей размещения файлов (FAT) и файловыми системами NTFS, такие как управление точками повторной обработки, управление разреженными файлами или отключение тома. Если он используется без параметров, fsutil отображает список поддерживаемых подкоманд.
Примечания :
Используя PowerShell, по крайней мере в ОС Windows вы можете найти символические ссылки в любом каталоге, например:
И вы можете получить соответствующую информацию по символической ссылке, выполнив одно из следующих действий:
Не используйте, fsutil чтобы проверить, является ли элемент символической ссылкой или нет. Во-первых, потому что errorlevel имеет ошибки, поэтому иногда он остается равным 0, а настоящая папка рассматривается как символическая ссылка. Уровень ошибок не может быть доверенным.
Проблема в find том, что find «Symbolic Link» это возможно на английском языке, но не на других языках.
Жесткие и символьные (символические) ссылки в Windows
Жесткие и символьные (символические) ссылки в Windows
Как отключить мини-приложения в 11
Как вернуть старое контекстное меню в 11
Не запускается PC Health Check на 11
Не могу обновиться до 11
Проверка совместимости с 11
Если вам когда-то приходилось просматривать расположения файлов штатных программ Windows, то возможно вы замечали одну странность. Некоторые файлы приложений дублируются, причем несколько раз. Например, в 64-разрядной Windows 8.1 обнаруживается целых 6 исполняемых файлов Блокнота notepad.exe, находящихся в разных каталогах системного раздела. Зачем вообще нужно такое странное дублирование?
А необходимо оно для обеспечения совместимости со сторонними приложениями, использующими Блокнот для каких-то своих нужд. Причина проста – в разных программах прописанный путь к Блокноту может отличаться, и чтобы исключить проблемы, разработчики Microsoft решили разместить notepad.exe в нескольких местах. То же самое касается ряда других штатных приложений, например, WordPad.
Жесткие ссылки или Hard Link
На самом деле дублирование совсем необязательно должно иметь место. То, что вы видите и определяете как реальный файл, в действительности может оказаться Hard Link — ссылкой особого типа, используемой для формирования путей к какому-нибудь файлу. Такие ссылки называются жесткими. Любопытно, что файл в NTFS может иметь до 1023 жестких ссылок, и все они будут выглядеть как его точная копия за исключением имени и размера. Как и ярлыки, жесткие ссылки могут иметь разные имена.
Зато содержимое и атрибуты у них общие, и если вы измените их в одной такой ссылке, то изменения коснуться всех остальных ссылок, даже тех, которые были удалены в Корзину. Что касается размера жестких ссылок, то это всего лишь одна видимость. Не имеющие практически никакого веса, ссылки этого типа определяются Проводником как имеющие реальный вес файлы, что иногда вызывает у пользователей немало вопросов и затруднений при ручной очистке ряда системных каталогов, того же Winsxs. Есть у Hard Link и свои ограничения. Так, создавать жесткие ссылки можно только на файлы и только в пределах одного тома.
К счастью, сталкиваться с жесткими ссылками рядовым пользователям приходится нечасто, иначе это наверняка бы привело к неразберихе и серьезным проблемам. Описывать все особенности поведения жестких ссылок мы не будем, так как это заняло бы слишком много времени. Вместо этого предлагаем вам создать Hard Link самостоятельно и поэкспериментировать с ними. Вот вам пример. Создайте на рабочем столе простой текстовый файл file1.txt и что-нибудь напишите в него. Теперь откройте командную строку и создайте на него пару жестких ссылок с именами file2.txt и file2.txt. Вот так:
fsutil hardlink create file2.txt file1.txt
fsutil hardlink create file3.txt file1.txt
Обратите внимание, что после команды create первым идет имя жесткой ссылки, а затем имя оригинального файла. Также вы можете создавать жесткие ссылки на другие жесткие ссылки. В общем, развлекайтесь. Уверен, что вы найдете для себя немало интересного.
Символьные ссылки или Symbolic Link
В отличие от жестких, символьные ссылки или Symbolic Link обладают большей гибкостью. Предназначаются они для удобной организации объектов файловой системы, а также оптимизации производительности приложений на SSD-дисках. Ссылки этого типа могут создаваться и для файлов, и для каталогов, в том числе сетевых; они поддерживают связь между томами, используя относительные пути. Принципом работы символьная ссылка напоминает обычный ярлык.
Использование Symbolic Link может иметь смысл при необходимости получения доступа к одному файлу из разных мест. Создаются символьные ссылки командой mklink:
mklink D:\file2.txt %userprofile%\desktop\file1.txt
Первым после команды идет путь к символьной ссылке, вторым – путь к оригинальному файлу. Если нужно создать символьную ссылку для каталога, используется та же команда mklink, но с ключом \d.
mklink \d D:\folder2 %userprofile%\desktop\folder1
Внешне символьные ссылки почти ничем не отличаются от обычных ярлыков, за исключением пометки symlink в свойствах файла или даты создания вместо пути к оригиналу в каталоге. Также если вы удалите оригинал, а затем попробуете перейти по символьной ссылке, то она просто не откроется, тогда как при попытке открыть битый ярлык появится сообщение о недоступности оригинального файла. Но самое главное отличие от ярлыков в том, что при работе с символьными ссылками Windows по-прежнему будет считать, что вы работаете с оригинальным объектом.
На этом пока все. В следующий раз мы рассмотрим способ применения символьных ссылок на более конкретных примерах, а заодно узнаем, какие используются утилиты для работы с жесткими и символьными ссылками.