Жесткая ссылка — еще одно имя того же файла и inode в одной файловой системе. Символическая ссылка — отдельный объект с путем к назначению; она может указывать на каталог, другую файловую систему или отсутствующий объект. Относительный путь отсчитывается от каталога ссылки. Ни один вариант не является независимой резервной копией данных.
Чем символические ссылки отличаются от жестких?
Как связаны имя файла, inode и путь назначения: ограничения жестких ссылок, относительные symlink и сохранение открытого файла после удаления имени.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
В Linux жесткая ссылка — дополнительное имя существующего файла: обе записи каталога ссылаются на один inode. У таких имен нет обязательного разделения на «оригинал» и «копию». Изменение содержимого этого файла доступно через любое его имя.
Жесткие ссылки создаются в пределах одной файловой системы; обычное создание жестких ссылок на каталоги не допускается. Удаление одного имени не уничтожает файл, пока остаются другие жесткие ссылки. Основные правила описаны в руководстве GNU ln.
Символическая ссылка, или symlink, — отдельный объект, содержащий путь. Он может вести к файлу или каталогу, в другую файловую систему и даже к еще не существующему назначению. После перемещения или удаления назначения ссылка может стать неразрешимой.
Относительный путь внутри symlink разрешается относительно каталога, где находится сама ссылка, а не текущего рабочего каталога программы. Это важно при создании ссылок в другом месте.
Пример команд для существующего файла file и еще не занятых имен:
ln file hard
ln -s file soft
Удаление последнего имени тоже не обязательно сразу освобождает данные: процесс может продолжать работать с уже открытым файлом. Этот случай описан в документации unlink.
Оба вида ссылок не заменяют независимый backup. Жесткая ссылка использует те же данные, а символическая только направляет к ним; повреждение содержимого не исправляется наличием дополнительных имен.