Ответ
Hard link — это дополнительное имя файла, которое напрямую ссылается на тот же inode (запись в файловой системе о данных файла). Все хардлинки равноправны. Удаление исходного имени файла не удаляет данные, пока существует хотя бы один хардлинк. Ограничение: хардлинки можно создавать только в пределах одной файловой системы.
Symbolic link (symlink, soft link) — это специальный файл, который содержит путь к целевому файлу или директории. Это указатель. Если удалить целевой файл, симлинк становится "битым" (dangling). Симлинки могут ссылаться на объекты в других файловых системах и даже на несуществующие пути.
Пример из практики:
# Создаю файл и хардлинк к нему
$ echo "data" > original.txt
$ ln original.txt hardlink.txt # Создание hard link
# Изменения в одном видны в другом (это один файл)
$ echo "more data" >> hardlink.txt
$ cat original.txt # Выведет: datanmore data
# Создаю symbolic link
$ ln -s original.txt symlink.txt
# Удаляю оригинал
$ rm original.txt
# Проверяю ссылки
$ cat hardlink.txt # Работает! Данные целы.
$ cat symlink.txt # Ошибка: No such file or directory (битая ссылка)
$ ls -l symlink.txt # Покажет 'symlink.txt -> original.txt' красным цветом
В инфраструктуре симлинки часто используются для управления версиями конфигов (например, /etc/nginx/nginx.conf -> /opt/nginx/conf/nginx.conf.1.2).