В чем разница между hardlink и symlink

«В чем разница между hardlink и symlink» — вопрос из категории Linux, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Hardlink – это прямая ссылка на inode файла, т.е. несколько имен файлов указывают на одни и те же данные на диске. Удаление одного hardlink не затрагивает данные, пока есть другие ссылки. Работает только в пределах одной файловой системы.

Symlink (символическая ссылка) – это отдельный файл, содержащий путь к другому файлу. При удалении оригинального файла symlink становится "битым". Может ссылаться на файлы в других файловых системах.

Пример создания в Linux (Golang аналоги через os.Link и os.Symlink):

# Hardlink
ln file.txt hardlink.txt

# Symlink
ln -s file.txt symlink.txt