В чем разница между символической ссылкой и ярлыком?
windows
shortcuts
symbolic-link
глубокий тм
источник
источник
Ответы:
Я думаю, что важным моментом является то, что ярлыки - это просто файл. У них есть размер (маленький, который просто указывает, куда они указывают), и они требуют, чтобы приложение поддерживало этот тип файла для использования.
Символическая ссылка - это уровень файловой системы, и все видят ее как исходный файл. Приложение не нуждается в специальной поддержке для использования символической ссылки.
источник
find
,tar
,du
и т.д.) действительно нужно знать о символических ссылках или они могут сделать некоторые очень глупые вещи. Например, ослепление следующих символических ссылок может создать циклы в файловой системе, и это плохо .«Символическая ссылка» может фактически действовать как замена каталога или файла функциональным способом и обычно используется в средах Unix / Linux. Хотя в Windows это явно поддерживается, я пока не видел его реального использования.
«Ярлык» - это обычный файл, который содержит ссылку на файл или каталог назначения, а также некоторые другие вещи, например, отображаемый значок. В отличие от символической ссылки, вы не можете «cd ./shortcut-name» в DOS (в Unix / Linux вы можете «cd ./symlink-name», и он будет работать как настоящий подкаталог).
Кроме того, в большинстве приложений Windows, когда вы нажимаете на ярлык в любом диалоге File-> Open GUI, поле вашего имени файла заполняется именем этого ярлыка, а также действует как подкаталог, в то время как в Unix / Linux GUI обрабатывает Символьная ссылка как путь (без изменения поля имени файла).
источник
Как уже упоминалось, символическая ссылка является одним из видов ссылок, доступных на уровне файловой системы, что делает ее прозрачной для приложений. Я нашел эту документацию очень полезной (особенно в разделе «Обрезать / развернуть / соединить внешние соединения / символические ссылки»). И инструмент там тоже выглядит красиво. (Упомянув это и mklink, мы надеемся, что дальнейшие поиски найдут это обсуждение.)
Ярлык - это файл, а не реальная ссылка, и, как правило, он успешно используется в качестве ссылки только при интерпретации пользовательским интерфейсом Windows. Например, если дважды щелкнуть ярлык папки, Windows перенаправит вас в другое место. (Это включает в себя общие диалоговые окна «Открыть файл» и «Сохранить файл», которые запускаются большинством приложений.) На моем рабочем столе есть ярлык для этой папки: C: \ ProgramData \ Microsoft \ Windows \ Start Menu \ Programs \ G
Сокращенное имя файла: C: \ Users \ user5 \ Desktop \ Games.lnk, хотя Windows подавляет расширение .lnk и просто показывает «Игры», даже если вы снимите флажок «скрыть расширения для известных типов файлов». Но если вы откроете командную строку и выполните команду dir, вы увидите это:
Я могу создать эквивалент с символической ссылкой, используя опцию \ D (для каталога):
(Соединение каталогов (\ J) также является опцией, так как это ссылка на папку.) Проводник Windows, так же как эта консоль и большинство приложений, позволит вам просматривать «вниз» в этом кажущемся подкаталоге, а не (а) перенаправлять «через» в другое место или (б) не удается.
Ярлыки не ведут себя как подкаталоги. Я могу вызвать поведение файла интерфейса пользователя по умолчанию в Windows с помощью этой команды (в Windows Explorer открывается папка «G»):
Принимая во внимание, что mysymlink перечислен (см. Количество) как истинный подкаталог и не может быть запущен таким образом:
И наоборот, вы не можете изменить каталог на ярлык:
Пользовательский интерфейс Windows позволяет щелкнуть правой кнопкой мыши, чтобы изменить свойства ярлыка. Или следующее показывает, что именно хранится в файле .lnk (двоичные данные), хотя лучше будет отображать шестнадцатеричный редактор:
В то время как при попытке запустить Блокнот в фактической подпапке появляется сообщение об ошибке «Отказано в доступе» и пустой Блокнот.
И наоборот, если я создаю символическую ссылку на файл (не символическую ссылку на папку), я могу запустить ее с помощью Блокнота. Из следующих вызовов notepad.exe первые два работают, а третий завершается неудачно (он открывает файл .LNK, двоичный файл gobbledegook).
Это не просто консоль. Копирование ярлыка в Блокнот на мой рабочий стол и попытка перетаскивания на него каждого из трех элементов демонстрирует точно такое же поведение. (Поскольку перетаскивание, в отличие от двойного щелчка, позволяет приложению интерпретировать ярлык.)
Относительно различий между символьными ссылками каталога и соединениями, посмотрите это обсуждение , и вот очень полезное описание :
«Основное различие в том, как Windows разрешает символические ссылки и соединения каталогов, заключается в том, где происходит обработка. Windows обрабатывает символические ссылки в локальной системе, даже когда они ссылаются на местоположение на удаленном файловом сервере. Windows обрабатывает соединения каталогов, которые ссылаются на удаленные файловый сервер на самом сервере. Символьные ссылки на сервере могут поэтому ссылаться на местоположения, которые доступны только от клиента, как другие тома клиента, в то время как соединения каталогов не могут. Для решения этой проблемы Windows Vista поддерживает новый тип символической ссылки для обоих файлов. и каталоги.
«Многие команды файловой системы были обновлены, чтобы понять значение символических ссылок. Например, команда« Удалить »знает, что не следует переходить по ссылкам, что приведет к удалению цели, а вместо этого удалить ссылку. Однако, поскольку не все приложения может обрабатывать символические ссылки правильно, для создания символической ссылки требуется новая привилегия «Создать символическую ссылку», которую по умолчанию имеют только администраторы ».
источник
Источник: http://schinagl.priv.at/nt/hardlinkshellext/linkshellextension.html
источник
Иногда полезно иметь функциональный пример, поэтому плохо объясню, как я использую эту функцию.
Я использую Google Drive для резервного копирования файлов, но иногда я хочу создавать резервные копии файлов в определенной папке (я не могу переместить их на ../google диск). Особенно с универсальными приложениями Windows 10, файлы конфигурации и тому подобное хранятся в appdata, и большую часть времени я не могу изменить это местоположение.
Я использую родное приложение Windows stikynot, и я хотел сделать резервную копию своих заметок, поэтому я использовал символическую ссылку здесь. Диск Google распознает ссылку как фактический файл и синхронизирует файлы очень хорошо, в то время как фактический файл все еще находится в папке appdata.
Когда у меня есть локальные файлы, например папки проекта, которые я не хочу синхронизировать с облаком, я использую ярлыки (копирование, вставка-> вставка ярлыка).
источник