[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-rabota-v-cli-bash-chto-takoe-simvolicheskie-i-zhyostkie-ssylki":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":18,"progress":19,"seo":20},166,"chto-takoe-simvolicheskie-i-zhyostkie-ssylki",4,"rabota-v-cli-bash","Работа в CLI (Bash)","💻","Что такое символические и жёсткие ссылки?","**Ссылки (links)** — это механизм файловой системы, позволяющий обращаться к одним и тем же данным по нескольким путям. Существуют два вида: жёсткие ссылки (hard links), указывающие напрямую на inode файла, и символические ссылки (symlinks), хранящие путь к целевому файлу.\n\n### Жёсткая ссылка (hard link)\n\nЖёсткая ссылка — это дополнительное имя (directory entry) для того же inode. Все жёсткие ссылки на один файл абсолютно равноправны: нет понятия «оригинал» и «копия». Данные удаляются только когда счётчик ссылок на inode падает до нуля.\n\n```bash\n# Создание жёсткой ссылки\nln original.txt hardlink.txt\n\n# Проверить — inode совпадает\nls -i original.txt hardlink.txt\n# 123456 original.txt\n# 123456 hardlink.txt     (тот же inode)\n```\n\n### Символическая ссылка (symlink, soft link)\n\nСимволическая ссылка — это отдельный файл со своим inode, содержащий путь к целевому файлу. Аналог ярлыка в Windows.\n\n```bash\n# Создание символической ссылки\nln -s \u002Fopt\u002Fjdk-17 \u002Fusr\u002Flocal\u002Fjava\nln -s ..\u002Fconfig\u002Fapplication.yml app.yml\n```\n\n### Сравнение\n\n| Характеристика | Жёсткая ссылка | Символическая ссылка |\n|---|---|---|\n| Inode | Тот же, что у оригинала | Свой собственный |\n| Удаление оригинала | Данные сохраняются, пока есть хоть одна ссылка | Ссылка становится «битой» (dangling) |\n| Ссылка на директорию | Нельзя (кроме `.` и `..`) | Можно |\n| Между файловыми системами | Нельзя (inode локальны для FS) | Можно |\n| Размер | Не занимает дополнительного места | Занимает (хранит текст пути) |\n| Производительность | Прямой доступ к данным | Дополнительный уровень косвенности |\n\n### Практические примеры\n\n```bash\n# Переключение версии Java\nsudo ln -sf \u002Fusr\u002Flib\u002Fjvm\u002Fjava-17\u002Fbin\u002Fjava \u002Fusr\u002Flocal\u002Fbin\u002Fjava\n# -f — перезаписать, если ссылка уже существует\n\n# Проверить, является ли файл ссылкой\nls -l \u002Fusr\u002Flocal\u002Fbin\u002Fjava\n# lrwxrwxrwx 1 root root 33 ... \u002Fusr\u002Flocal\u002Fbin\u002Fjava -> \u002Fusr\u002Flib\u002Fjvm\u002Fjava-17\u002Fbin\u002Fjava\n\n# Количество жёстких ссылок (второй столбец ls -l)\nls -l file.txt\n# -rw-r--r-- 2 user user 1024 ... file.txt\n#             ^ 2 жёсткие ссылки\n\n# Найти все жёсткие ссылки на файл по inode\nfind \u002F -inum 123456\n\n# Найти битые символические ссылки\nfind . -xtype l\n```\n\n### Вывод\n\nДля повседневных задач (переключение версий, удобные алиасы путей) используйте символические ссылки. Жёсткие ссылки полезны для бэкапов и систем, где важна устойчивость к случайному удалению «оригинала».\n\n> **На собеседовании:** объясните разницу через inode: жёсткая ссылка — второе имя для того же inode, символическая — отдельный файл с путём. Ключевые ограничения жёстких ссылок: нельзя на директории, нельзя между файловыми системами. Частый вопрос-ловушка: «что произойдёт при удалении оригинала?» — для hard link данные останутся, для symlink ссылка станет битой.\n\n---","","junior",[15,16,17],"linux","bash","filesystem",[],null,{"title":21,"description":22,"ogTitle":21,"ogDescription":23,"keywords":24,"schemaAnswer":33,"featuredSnippetReady":34},"Символические и жёсткие ссылки в Linux: hard link vs symlink -- Gymterview","Что такое символические и жёсткие ссылки в Linux? Различия hard link и symlink, создание командой ln, inode, практические примеры переключения версий Java.","Сравнение жёстких и символических ссылок в Linux: inode, поведение при удалении оригинала, ограничения и практические примеры.",[25,26,27,28,29,30,31,32],"символическая ссылка","жёсткая ссылка","hard link","symlink","soft link","ln","inode","ссылки Linux","Жёсткая ссылка (hard link) -- дополнительное имя для того же файла (того же inode), все жёсткие ссылки равноправны, данные сохраняются, пока есть хоть одна ссылка. Символическая ссылка (symlink) -- отдельный файл, содержащий путь к целевому файлу, аналог ярлыка. Ключевые различия: жёсткие ссылки не могут указывать на директории и пересекать файловые системы, при удалении оригинала symlink становится битой. Создаются командой ln (без флагов -- жёсткая, с -s -- символическая). Практический пример: переключение версии Java через ln -sf.",true]