Назад | Перейти на главную страницу

В чем разница между мягкой (символьной) ссылкой и жесткой ссылкой?

Я слышал, что теперь ты можешь создавать софт-ссылки в Vista тоже. Итак, в чем разница между мягкой (символической) ссылкой и жесткой ссылкой в ​​UNIX / Linux / Vista?

Есть ли преимущества в использовании одного перед другим? Или они просто служат двум разным целям?

Жесткая ссылка традиционно использует одни и те же структуры файловой системы (inode в unixspeak), а мягкая ссылка - это перенаправление имени пути.

  • Жесткие ссылки должны находиться в одной файловой системе, программные ссылки могут пересекать файловые системы.
  • Файлы с жесткой связью остаются связанными, даже если вы переместите один из них (если вы не переместите один из файлов в другую файловую систему, запустив механизм копирования и удаления). Файлы с мягкими ссылками ломаются, если вы перемещаете цель (оригинал), а иногда и когда вы перемещаете ссылку (вы использовали абсолютный или относительный путь? Он все еще действителен?).
  • Файлы с жесткими ссылками являются одинаковыми, в то время как оригинал является особенным в программных ссылках, и удаление оригинала удаляет данные. Данные не уйдут, пока все жесткие ссылки удаляются.
  • Мягкие ссылки могут указывать на любой target, но большинство ОС / файловых систем запрещают жесткую привязку каталогов для предотвращения циклов в графе файловой системы (за исключением . и .. записи в каталогах unix, которые являются жесткими ссылками).
  • Для софтлинков может потребоваться специальная поддержка со стороны инструментов обхода файловой системы. Следить за публикациями ссылка для чтения (2).

(Некоторые детали напомнили mat1t. Спасибо.)

Суть в том, что символическая / короткая ссылка действует как ярлык для местоположения первого файла, тогда как жесткая ссылка - это ярлык для файла на диске.

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

Существуют также определенные ограничения, например, я не думаю, что вы можете создавать жесткие ссылки на папки, но вы можете создавать из них мягкие ссылки. Мягкие ссылки также могут указывать на файлы / папки на разных дисках и разделах, тогда как жесткие ссылки - нет.

В системе MS Windows всегда используются программные ссылки (ярлыки). То есть ссылка просто действует как ярлык, указывающий на расположение файла. Если место оригинала перемещено, ссылка разрывается. Более того, то, что вы делаете с ярлыком (например, изменение разрешений или изменение имени ярлыка), не влияет на сам файл.

Итак, вопрос начался с неверного предположения. Да, Vista использует программные ссылки, но это не новость, то есть ярлык MS.