# Hard link
ln source_file hardlink_name
# Symbolic link
ln -s target_file symlink_name
Hard Link:
inode1 -> data blocks
↑
name1, name2 (оба указывают напрямую на inode1)
Symbolic Link:
inode2 -> data blocks (содержащие путь к target)
↓
inode1 -> data blocks
Характеристика | Hard Link | Symbolic Link |
---|---|---|
Inode | Совпадает с оригиналом | Собственный inode |
Размер | Не занимает доп. места | Занимает место под путь |
ФС | Только в пределах одной ФС | Межфайловой системы |
На директории | Невозможно | Возможно |
Удаление оригинала | Данные сохраняются | Ссылка "ломается" |
Права доступа | Всегда совпадают с оригиналом | Могут отличаться |
# Показать inode и количество ссылок
ls -li
# Найти все hard links к файлу
find / -samefile /path/to/file 2>/dev/null
# Проверить тип ссылки
ls -l /path/to/link
# Hard link сохраняет данные при удалении "оригинала"
touch original
ln original hardlink
rm original
cat hardlink # Данные доступны
# Symlink становится нерабочим
ln -s target symlink
rm target
cat symlink # Ошибка: нет такого файла
Hard Links:
Symbolic Links:
Hard Links для:
Symbolic Links для:
Резюмируем: Hard Links - это альтернативные имена одного файла с общим inode, тогда как Symbolic Links - отдельные файлы-указатели. Выбор типа ссылки зависит от конкретной задачи: hard links обеспечивают надежность, symlinks - гибкость и кросс-ФС функциональность.