Hardlink (жесткая ссылка) — это запись в структуре каталога, которая связывает имя файла с конкретным номером inode (индексного дескриптора) на диске. В ОС семейства Linux файл определяется через inode, содержащий метаданные и адреса блоков данных, а имя файла является лишь ссылкой на этот дескриптор. Все жесткие ссылки на один файл абсолютно равноправны: операционная система не делает различий между первым созданным именем и последующими.
Механизм работы
При создании жесткой ссылки командой ln увеличивается счетчик ссылок (link count) в inode. Файловая система удаляет данные с диска только тогда, когда этот счетчик становится равным нулю. Это гарантирует сохранность данных, пока существует хотя бы одно имя, указывающее на них. Существует два жестких ограничения: ссылки нельзя создавать между разными разделами (так как номера inode уникальны только внутри одной ФС) и запрещено создавать ссылки на каталоги для предотвращения зацикливания файловой структуры.
Жесткие ссылки активно применяются в инкрементальном резервном копировании. Утилиты вроде rsync используют их, чтобы не дублировать неизменные файлы: в новом бэкапе создается ссылка на файл из предыдущего. Это позволяет хранить множество полных слепков системы, занимая место только под измененные данные. Проверить номер inode и количество ссылок можно командой ls -li.