Википедия определяет жесткую ссылку как:
запись каталога, которая связывает имя с файлом в файловой системе. (Каталог сам по себе является особым видом файла, который содержит список таких записей.) Этот термин используется в файловых системах, которые позволяют создавать несколько жестких ссылок для одного и того же файла.
Мне интересно, если концепция жесткой ссылки эквивалентна концепции ярлыка Windows .
Если жесткие ссылки не эквивалентны ярлыкам, то какая функция Windows ближе всего к жестким ссылкам?
Ответы:
Нет, жесткая ссылка совершенно другая. Мягкая ссылка ближе к ярлыку Windows (хотя есть важные различия, символические ссылки больше похожи на ярлыки Windows, чем жесткие ссылки). Жесткая ссылка - это совсем другое, и она вам почти никогда не понадобится.
Вкратце, мягкая ссылка создается с помощью этой команды:
Если вы затем запустите
ls -l
, вы увидите:В
->
означает , чтоbar
является ссылкойfoo
. Таким образом, открытиеbar
, например, с помощью текстового редактора, фактически откроет отдельный файлfoo
. Тем не менее, удалениеbar
будет просто удалить ярлык, это не повлияет на файлfoo
.Жесткие ссылки, с другой стороны, создаются с помощью этой команды:
Если вы сейчас запустите
ls -l
, нет никаких признаков какой-либо связи между файлами:Но - и это очень важно - это фактически один и тот же файл . Файлы в файловых системах Unix хранятся с использованием инодов ; inode - это, по сути, способ, которым файловая система отображает имя файла в определенном месте на физическом жестком диске. Таким образом, жесткие ссылки - это файлы, которые указывают на тот же индекс, что и их цель. Другой способ выразить это так: все файлы на самом деле являются жесткими ссылками, указывающими на их иноды. Создание жесткой ссылки на файл просто создает новый указатель (файл) в файловой системе, который указывает на тот же индекс. Каждый индекс может иметь несколько файлов, указывающих на него, либо один, либо ни одного.
Чтобы понять это более четко, используйте,
ls -i
который показывает индекс, связанный с файлом. Давайте создадим мягкую ссылку и жесткую ссылку и посмотрим, что произойдет:Теперь проверьте их inode:
Как вы можете видеть выше, оба
foo
иHardLinkToFoo
имеют один и тот же индекс (16648029), тогда как SoftLinkToFoo имеет другой (16648036).Что произойдет , если мы переименуем
foo
сmv foo bar
?Красный цвет указывает на сломанную мягкую ссылку, цель которой больше не может быть найдена. Это связано с тем, что программные ссылки указывают на имя файла, а не его индекс. Обратите внимание, что несмотря на изменение имени, индекс остается неизменным, так что с жесткой связью все в порядке, он все еще работает.
Таким образом, жесткие ссылки на самом деле являются двумя проявлениями одного и того же файла; они являются указателями на один и тот же раздел диска. Мягкие ссылки - это просто ярлыки. Чтобы провести реальную аналогию, жесткие ссылки - это два разных телефонных номера для одной и той же телефонной линии, а программные ссылки - как две разные телефонные линии в одном доме.
источник
rm
илиunlink()
) жесткой ссылки только уменьшает количество ссылок, пока количество ссылок не достигнет нуля, когда блоки, занятые содержимым файла, будут освобождены. Я не уверен, что высказывание «жесткие ссылки - это на самом деле два экземпляра одного и того же файла» является строго правильным, поскольку два имени указывают на один и тот же индекс и, следовательно, на одно и то же содержимое, а не на то, что два экземпляра самого файла любое чувство.Есть хорошее объяснение, что такое мягкие и жесткие ссылки, но нужно уточнить одну вещь.
Ярлыки Windows эквивалентны или не похожи ни на мягкие ссылки, ни на жесткие ссылки . На уровне файловой системы это просто файлы. Это оболочка, которая понимает их структуру и интерпретирует их как ссылки. Ярлыки Windows также могут указывать на объекты в пространствах имен оболочки, которые не связаны с файловой системой (принтеры, элементы панели управления, виртуальные папки).
Ярлыки Windows, помимо имени объекта файловой системы, содержат следующую информацию: PIDL (непрозрачный двоичный «путь» в пространстве имен оболочки), описание, горячая клавиша, значок, рабочий каталог. Windows также добавляет идентификаторы объектов NTFS, если используется файловая система NTFS, чтобы исправить неисправные ярлыки.
Грубый эквивалент ярлыка Windows - файл .desktop . Посмотрите этот вопрос на SuperUser: есть ли эквивалент .lnk в Linux?
источник
Нет. В Linux все работает иначе.
Каждый файл представлен объектом с именем «inode». С каждым индексом связан номер (ID).
Как мы знаем, люди не умеют запоминать числа, а имена. (Так развивались телефонные книги)
Таким образом, имя файла вошло в рисунок, чтобы дать каждому inode удобочитаемое имя. По сути, жесткая ссылка связывает имя файла с индексом. Индод может иметь несколько жестких ссылок. Если для определенного inode отсутствуют жесткие ссылки, дисковое пространство, используемое inode, может быть перераспределено для новых файлов. Это означает, что для каждого файла должна присутствовать хотя бы одна жесткая ссылка. Имя файла (визуализируемое как имя файла / значок, которое вы видите в файловом браузере) само по себе является жесткой ссылкой.
В Windows ярлык - это отдельный файл (файл * .lnk). Он содержит информацию об исходном файле (понятно, путь к файлу). В восприятии Linux ярлык Windows будет другим индексом, жестко связанным с именем файла, оканчивающимся на «.lnk».
источник
В Windows вы также можете создавать жесткие ссылки, если у вас есть файловая система NTFS.
Файлы должны быть на одном логическом диске.
источник
subst
командой. Инструмент может не знать / заботиться об этом и, следовательно, отказаться от создания жесткой ссылки. Очень полезная вещь - расширение Shell Shell, которое позволяет проводнику создавать их.Большая разница, жесткая ссылка не может быть создана для папок, но для файлов.
Ваш вопрос должен быть разницей между символической ссылкой или мягкой ссылкой и ярлыком .
в соответствии с этим:
Поэтому, когда вы щелкаете по ярлыку, ваш каталог меняется на фактический файл, в то время как soft-link ссылается на его местоположение, как если бы это был фактический файл, для этого в Linux вы можете использовать терминал и cd для символических ссылок, а вы не можете использовать cd для ярлыков. ,
Ярлык Windows и панель запуска Linux (указывающая на какое-то место) будут идентичны.
источник