← Назад ко всем вопросам

Что такое hardlink в Linux

1️⃣ Как кратко ответить

Hardlink в Linux — это ссылка на данные файла, которая указывает на тот же inode, что и оригинальный файл. Это позволяет нескольким именам файлов указывать на одни и те же данные на диске. Удаление одного из hardlink'ов не удаляет данные, пока существует хотя бы один hardlink.

2️⃣ Подробное объяснение темы

В файловых системах Linux, таких как ext4, каждый файл представлен структурой данных, называемой inode. Inode содержит метаданные о файле, такие как права доступа, владелец, временные метки и указатели на блоки данных на диске. Имя файла, которое вы видите в каталоге, — это просто ссылка на inode.

Hardlink — это дополнительная ссылка на тот же inode. Это значит, что несколько имен файлов могут указывать на одни и те же данные. Все hardlink'и равноправны: нет "оригинального" файла и "ссылок" на него, все они равнозначны.

Пример использования hardlink

Предположим, у вас есть файл file1.txt:

echo "Hello, World!" > file1.txt

Создадим hardlink для этого файла:

ln file1.txt file2.txt

Теперь file1.txt и file2.txt указывают на один и тот же inode. Это значит, что изменения, внесенные в один файл, отразятся и в другом, так как они оба указывают на одни и те же данные.

Проверка inode

Можно проверить, что оба файла указывают на один и тот же inode, используя команду ls -i:

ls -i file1.txt file2.txt

Вывод покажет одинаковые номера inode для обоих файлов, что подтверждает, что они являются hardlink'ами.

Удаление hardlink

Если удалить один из hardlink'ов, например, file1.txt:

rm file1.txt

Данные не будут удалены с диска, так как file2.txt все еще указывает на тот же inode. Данные удаляются только тогда, когда удалены все hardlink'и, указывающие на этот inode.

Применение hardlink

Hardlink'и полезны для экономии дискового пространства и создания резервных копий, так как они позволяют нескольким именам файлов указывать на одни и те же данные без дублирования. Это особенно полезно в системах резервного копирования и управления версиями, где требуется хранить несколько версий файлов без избыточного использования дискового пространства.

Тема: Linux / Unix
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки