Я понимаю разницу между символическими и жесткими ссылками, но я никогда не понимал, почему выбирают одно или другое.
4 ответа
Рональд говорит, что жесткая ссылка может иметь разные разрешения в двух местах. Это неправильно. Оба места имеют один и тот же индекс. Права доступа связаны с индексом, а не с именем файла. Таким образом, жесткие ссылки в двух местах имеют одинаковые разрешения, время доступа, ...
Это было обсуждено более подробно на ServerFault.
Жесткая ссылка традиционно использует те же структуры файловой системы (inode в unixspeak), в то время как мягкая ссылка является перенаправлением пути.
- Жесткие ссылки должны быть в одной файловой системе, программные ссылки могут пересекать файловые системы.
- Файлы с жесткими ссылками остаются связанными, даже если вы переместите один из них (если только вы не переместите один в другую файловую систему, запускающую механизм копирования и удаления). Файлы с мягкими связями ломаются, если вы перемещаете цель (оригинал), а иногда и при перемещении ссылки (Использовали ли вы абсолютный или относительный путь? Это все еще в силе?).
- Файлы с жесткими ссылками совпадают, в то время как оригинал является специальным в программных ссылках, а удаление оригинала удаляет данные. Данные не исчезают, пока все жесткие ссылки не будут удалены.
- Мягкие ссылки могут указывать на любую цель, но большинство ОС / файловых систем запрещают жесткие ссылки на каталоги, чтобы предотвратить циклы в графе файловой системы (за исключением записей
.
И..
каталогах unix, которые являются жесткими ссылками). - Мягкие ссылки могут требовать специальной поддержки от инструментов обхода файловой системы. Читайте на readlink (2).
(Некоторые детали вспомнили mat1t. Спасибо.)
символические ссылки могут пересекать файловые системы, жесткие ссылки - нет. Если вы удалите исходный файл, жесткая ссылка все равно сохранит его, а символическая ссылка - нет.
Жесткая ссылка означает, что файл находится в двух местах, у него могут быть разные разрешения, вы можете удалить его на месте, но не в другом.
Мягкая ссылка - это просто указатель на реальную вещь.
Жесткая ссылка - это две (или более) записи каталога, указывающие на один и тот же файл. Мягкая ссылка - это запись каталога, указывающая на другую запись каталога.