if ($answer_counter == 1): ?>
endif; ?>
Нет, жесткая ссылка совершенно другая. Мягкая ссылка ближе к ярлыку Windows (хотя есть важные отличия, символические ссылки более похожи на ярлыки Windows, чем жесткие ссылки). Жесткая ссылка - это другое дело, и вам почти не понадобится. Р>
Вкратце, с помощью этой команды создается мягкая ссылка:
ln -s foo bar
Если вы затем запустите ls -l
, вы увидите:
lrwxrwxrwx 1 terdon terdon 3 Mar 10 15:58 bar -> foo
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
->
означает, что bar
является ссылкой на foo
. Итак, открытие bar
, с текстовым редактором, например, фактически откроет отдельный файл foo
. Однако удаление bar
просто удалит ярлык, это не повлияет на файл foo
.
С другой стороны, жесткие ссылки создаются с помощью этой команды:
ln foo bar
Если теперь вы запускаете ls -l
, нет никаких указаний на какие-либо отношения между файлами:
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 bar
-rw-r--r-- 2 terdon terdon 0 Mar 10 15:58 foo
Но - и это очень важно - на самом деле это тот же файл . Файлы в файловых системах Unix хранятся с помощью inodes ; inode - это в основном способ, которым файловая система отображает имя файла в определенное место на физическом жестком диске. Таким образом, жесткие ссылки - это файлы, которые указывают на тот же inode , что и их цель. Другой способ сделать это - это то, что файлы all на самом деле являются жесткими ссылками, указывающими на их inodes. Создание жесткой ссылки на файл просто создает новый указатель (файл) в файловой системе, который указывает на тот же индекс. Каждый индексный дескриптор может иметь несколько файлов, указывающих на него или один или ни один.
Чтобы понять это более четко, используйте ls -i
, который показывает индексный дескриптор, связанный с файлом. Давайте создадим мягкую ссылку и жесткую ссылку и посмотрим, что произойдет:
ln -s foo SoftLinkToFoo
ln foo HardLinkToFoo
Теперь проверьте их inodes:
Как вы можете видеть выше, оба foo
и HardLinkToFoo
имеют один и тот же индекс (16648029), а у SoftLinkToFoo - другой (16648036). Р>
Что произойдет, если мы переименуем foo
с mv foo bar
?
Красный цвет указывает на сломанную софт-ссылку, та, чья цель больше не может быть найдена. Это связано с тем, что мягкие ссылки указывают на имя файла, а не на его inode. Обратите внимание, что, несмотря на изменение имени, inode остается тем же, что и жесткая ссылка, все равно работает.
Таким образом, жесткие ссылки на самом деле являются двумя проявлениями файла same ; они являются указателями на один и тот же раздел диска. Мягкие ссылки - это просто ярлыки. Чтобы принять реальную мировую аналогию, жесткие ссылки похожи на два разных телефонных номера для одной и той же телефонной линии, а мягкие ссылки похожи на наличие двух разных телефонных линий в одном доме. Р>