Ответ
Удаляется лишь одна из записей каталога, ссылающаяся на конкретный inode. Сам файл (данные на диске) остается.
Детальный процесс:
- Файловая система уменьшает счетчик жестких ссылок (
link count) в метаданных inode. - Если счетчик становится равным нулю (удалена последняя жесткая ссылка), ядро:
- Помечает блоки данных файла как свободные (если на них нет других ссылок).
- Помечает сам inode как свободный для повторного использования.
- Пока счетчик ссылок > 0, данные файла остаются доступны по другим оставшимся путям (hard link'ам).
Пример и проверка:
# Создаем файл и жесткую ссылку
echo "Important data" > original.txt
ln original.txt link_to_file.txt
# Проверяем, что оба имени указывают на один inode (одинаковый первый столбец)
ls -li original.txt link_to_file.txt
# 1234567 -rw-r--r-- 2 user group 15 Apr 10 10:00 original.txt
# 1234567 -rw-r--r-- 2 user group 15 Apr 10 10:00 link_to_file.txt
# ^ inode номер
# Удаляем оригинальное имя
rm original.txt
# Данные все еще доступны по второй ссылке
cat link_to_file.txt # Выведет: Important data
# Проверяем счетчик ссылок (теперь 1)
ls -l link_to_file.txt
# -rw-r--r-- 1 user group 15 Apr 10 10:00 link_to_file.txt
Важно: Hard link'и можно создавать только в пределах одной файловой системы (одного раздела). Для каталогов (кроме . и ..) они обычно запрещены.