В чем разница между мягкой (символической) ссылкой и жесткой ссылкой?
Я слышал, что теперь вы можете создавать софт-ссылки и в Vista. Итак, в чем разница между мягкой (символической) ссылкой и жесткой ссылкой в UNIX/Linux/Vista?
Есть ли преимущества использования одного над другим? Или они просто служат двум различным целям?
3 ответа
Жесткая ссылка традиционно использует те же структуры файловой системы (inode в unixspeak), в то время как программная ссылка является перенаправлением пути.
- Жесткие ссылки должны быть в одной файловой системе, программные ссылки могут пересекать файловые системы.
- Файлы с жесткими ссылками остаются связанными, даже если вы переместите один из них (если только вы не переместите один в другую файловую систему, запускающую механизм копирования и удаления). Файлы с мягкими связями ломаются, если вы перемещаете цель (оригинал), а иногда и при перемещении ссылки (Использовали ли вы абсолютный или относительный путь? Он все еще действителен?).
- Файлы с жесткими ссылками совпадают, в то время как оригинал является специальным в программных ссылках, а удаление оригинала удаляет данные. Данные не исчезают, пока все жесткие ссылки не будут удалены.
- Мягкие ссылки могут указывать на любую цель, но большинство ОС / файловых систем не разрешают жесткие ссылки на каталоги, чтобы предотвратить циклы в графе файловой системы (за исключением
.
а также..
записи в каталогах Unix, которые являются жесткими ссылками). - Мягкие ссылки могут требовать специальной поддержки от инструментов обхода файловой системы. Читайте на readlink (2).
(Некоторые детали вспомнили mat1t. Спасибо.)
Суть в том, что символическая / короткая ссылка действует как ярлык для местоположения первого файла, тогда как жесткая ссылка - это ярлык для файла на диске.
Если вы удалите цель для мягкой ссылки, то мягкая ссылка перестанет работать, но если вы удалите одну копию жесткой ссылки, файл останется на диске, пока все жесткие ссылки на него не будут удалены. В действительности все имена файлов являются жесткими ссылками на файл на диске.
Существуют также определенные ограничения, например, я не думаю, что вы можете создавать жесткие ссылки на папки, но вы можете создавать их мягкие ссылки. Мягкие ссылки могут также указывать на файлы / папки на разных дисках и разделах, тогда как жесткие ссылки не могут.
Система MS Windows всегда использует программные ссылки (ярлыки). То есть ссылка просто действует как ярлык, указывающий на местоположение файла. Если местоположение оригинала перемещено, ссылка разрывается. Кроме того, то, что вы делаете с ярлыком (например, смена разрешений или изменение имени ярлыка), не влияет на фактический файл.
Так что вопрос начался с неверного предположения. Да, Vista использует программные ссылки, но это не ново, то есть, что такое ярлык MS.