В чем различие между жесткой и символической ссылкой?
Жесткая ссылка:
- Жесткая ссылка не может быть создана для каталогов*. Жесткая ссылка может быть создана только для файла.
- Жесткая ссылка может быть создана только в приделах одной файловой системы из за inode.
- Удаление исходного файла, на который указывает твоя жесткая ссылка, не удаляет саму жесткую ссылку. Жесткая ссылка по-прежнему предоставляет содержимое основного файла.
Символическая ссылка:
- Символические ссылки или симлинки могут ссылаться на каталог.
- Символические ссылки могут быть в разных файловых системах.
- Удаление исходного файла не удаляет символическую ссылку, но без исходного файла символическая ссылка бесполезна.
Однако, есть и общее свойство:
Если вы удалите жесткую ссылку или символическую ссылку, исходный файл останется без изменений.
* Пару моментов по данному вопросу.
Вообще, Жесткие ссылки на каталоги разрешены в Linux, но ограниченным способом.
Один из способов проверить это, когда мы делаем ls -la, мы находим два специальных каталога «.» а также «..». Как мы знаем «.» указывает на тот же каталог, а «..» указывает на родительский каталог.
Давайте создадим дерево каталогов, где «a» является родительским каталогом, у которого каталог «b» является дочерним.:
a
`– b
Запишите индекс каталога «а». И когда мы делаем ls -lai из каталога «а», мы можем видеть, что «.» каталог также указывает на тот же индекс.
user@host:~$ ls -lai
31721141 drwxr-xr-x 3 user group 4096 дек 23 14:35 a
user@host:~$ cd a
user@host:~/a$ ls -lai
31721141 drwxr-xr-x 3 user group 4096 дек 23 14:35 .
31457281 drwxr-xr-x 76 user group 4096 дек 23 14:32 ..
31721143 drwxr-xr-x 2 user group 4096 дек 23 14:35 b
Теперь перейдем в каталог b и сделаем то же самое:
user@host:~/a$ cd b
user@host:~/a/b$ ls -lai
31721143 drwxr-xr-x 2 user group 4096 дек 23 14:35 .
31721141 drwxr-xr-x 3 user group 4096 дек 23 14:35 ..
И здесь мы можем обнаружить, что каталог «а» имеет три жесткие ссылки. Это связано с тем, что индекс 31721141 имеет жесткие ссылки на имя «.» внутри каталога «a», имя как «..» внутри каталога «b» и еще одну, на сам каталог a.
Жесткие ссылки существуют только для каталогов, связанных с их родительскими и дочерними каталогами.
Кроме того, в некоторых других UNIX системах - символические ссылки на каталоги разрешены.