Каковы преимущества символических ссылок по сравнению с жесткими ссылками и наоборот?

13215
Javier

Я понимаю разницу между символическими и жесткими ссылками, но я никогда не понимал, почему выбирают одно или другое.

9
См. Ответы на «Какая разница между символической ссылкой и жесткой ссылкой?» на StackOverflow: http://stackoverflow.com/questions/185899/what-is-the-difference-between-a-symbolic-link-and-a-hard-link pelms 15 лет назад 2

4 ответа на вопрос

9
hurikhan77

Рональд говорит, что жесткая ссылка может иметь разные разрешения в двух местах. Это неправильно. Оба места имеют один и тот же индекс. Права доступа связаны с индексом, а не с именем файла. Таким образом, жесткие ссылки в двух местах имеют одинаковые разрешения, время доступа, ...

8
dmckee

Это было обсуждено более подробно на ServerFault.

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

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

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

1
bobmcn

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

0
Ronald Pottol

Жесткая ссылка означает, что файл находится в двух местах, у него могут быть разные разрешения, вы можете удалить его на месте, но не в другом.

Мягкая ссылка - это просто указатель на реальную вещь.

Жесткая ссылка - это две (или более) записи каталога, указывающие на один и тот же файл. Мягкая ссылка - это запись каталога, указывающая на другую запись каталога.