Линукс жесткая ссылка это

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

Настройка программных телефонов

Корпоративные сети

Протоколы и стандарты

Мягкие и жесткие ссылки в Linux

Продолжаем говорить про символические ссылки

Мы уже рассказывали про мягкие и жесткие ссылки в Linux, и данная статья посвящена их более глубокому изучению. Ссылки в операционной системе Linux бывают 2-х типов мягкие и жесткие. Если провести аналогию с операционной системой Windows, то там мы в основном работаем с мягкими ссылками, символическими ярлыками. Но в операционной системе Windows есть и жесткие ссылки, просто они очень глубоко спрятаны внутри операционной системы. В статье будет рассказано:

  • Как идентифицировать тип ссылки
  • В чем разница между мягкой и жесткой ссылкой
  • В чем разница между копирование и создание ссылки

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Итак, смотрим в домашнюю директорию пользователя. Я заранее создал файл и 2 ссылки жесткую и мягкую указывающие на данный файл.

Основной файл file.txt , жесткая ссылка hard.txt на файл file.txt и мягкая ссылка soft.txt на файл file.txt . Как можно заметить символические (мягкие) ссылки в оболочке, обычно, подкрашиваются ярко голубым цветом и показывают на какой файл она ссылается. Можно еще интересную вещь заменить основной файл весит 38 килобайт и жесткая ссылка столько же весит. Мягкая ссылка – это всего лишь ярлык и весит всего 8 килобайт. Посмотрим, что внутри файла основного. Файл содержит фразу.

Команда ls с ключем –li может отображать inodes. В результате ввода команды появился еще один столбец впереди. В данном столбце и отображается номер inodes, т.е идентификатор файла, индексный дескриптор, местонахождение файла на диске, метка файла.

В нашем же случае номера inodes у файла и у жесткой ссылки совпадает. Т.е жесткая ссылка указывает на то же место, где находиться основной файл, в то же самое место на жестком диске. Мягкая же ссылка, сама по себе является отдельным файлом и у нее совершенно другой inode. А также можно видеть, что у данного файла в правах появилась буква l , которая указывает что это символьная ссылка. Причем попробовав просмотреть содержимое жесткой и мягкой ссылки, мы получим одинаковый результат. Все показывает на один и тот же файл.

Если мы попробуем дописать, какие-нибудь изменения в файл. Например, echo Hello>> file.txt

Получим один и тот же результат. Возьмем и переименуем наш основной файл mv file.txt newfile.txt .

Теперь мы можем увидеть, что ссылка мягкая у нас стала красной (Битой). Потому что, мягкие ссылки опираются на имя файла. Причем не просто на имя файла, а на полное имя файла. А жесткая ссылка, как была, так и осталась работоспособной. Потому, что она указывает на один и тот же inode, потому что она указывает на то место где данный файл находиться. И если мы утилитой cat скажем показать жесткую ссылку в выводе мы получим исходный файл, а мягкая ссылка выдаст нам ошибку. Основная разница между жесткой ссылкой и мягкой, заключается в том, что мягкая опирается на имя файла. А жесткая указывает на физическое место, определяемое дескриптором где находиться файл.

Создаются такие ссылки достаточно просто, командой ln с указанием основного файла и ссылки. Например, ln file.txt hard.txt . При создании мягкой ссылки добавляется ключик –s . Будет выглядеть примерно так — ln –s file.txt soft.txt . При создании ссылки, можно объекты указывать без расширения.

Т.к. жесткая ссылка у нас привязана к inode, то ее нельзя использовать с несколькими файловыми системами. Если у вас есть другой жесткий диск премонтированый в данную файловую систему, то вы не сможете создать жесткую ссылку из данной системы к премонтированному жесткому диску. Потому, что это все опирается на inode, а inode справедливы для конкретной файловой системе. Поэтому в операционной системе Windows все ссылки по умолчанию мягкие. Пригодиться это может где угодно. Например, мы в своей домашней директории можем создать ссылки на все свои важные папки или данные. Очень часто символические ссылки используются для администрирования. Операционной системы Linux. Например, для команд, если пользователь не хочет знать номер версии или дополнительные ключи, он может просто получать доступ к различным версиям просто используя ссылки.

Читайте также:  Как удалить установочные файлы windows с жесткого диска

Также стоит упомянуть ситуацию с папками.

Создадим папку — mkdir Folder . Попробуем создать жесткую ссылку на данную папку — ln Folder folder.lnk , данная команда выдаст ошибку указывая на то, что нельзя создать жесткую ссылку на папку, но, а если мы захотим создать мягкую (символическую ссылку), то проблемы не возникнет — ln –s Folder folder.lnk .

Хорошим тоном при создании ссылок символических это указание на полный путь файлу, т.к привязка идет к имени файла и при создании если указать относительны, мы можем столкнуться с ситуацией, когда получившаяся ссылка будет битой. Например, когда мы хотим создать ссылку на файл и положить ее во внутрь другие папки ln –s /home/siadmin/file.txt Folder/ . данный вариант будет рабочим.

Разница между копирование файла и созданием ссылки. Когда копируем файл мы фактически создаем другой файл со всем его содержимым, а когда мы создаем ссылку – это некий ярлык на файл. Скопируем файл file.txt в newfile.txt и на file.txt создадим жесткую ссылку. Когда мы смотрим вывод команды ls –l по папке то визуально копию мы не отличим от жесткой ссылки, если мы конечно об этом не знаем. А отличие мы увидим только если мы посмотрим на inodes.

Как мы видим номера inode у файла и жесткой ссылки совпадают, причем мы не знаем, что из них первично. Можно заметить столбец с цифрами после указания прав на объекты, он показывает сколько ссылок жестких есть на данный inode. Создадим еще одну жесткую ссылку ln file.txt hard1.txt . Теперь если сделать вывод ls –li , то мы увидим цифру 3. Почему так происходит? Удалением файла у нас по умолчанию является действие, которое обнуляет количество всех жестких ссылок. Если мы удалим файл исходный file.txt . и посмотрим вывод то мы увидим, что если есть мягкие ссылки, то они прекратят работать, а файлы hard.txt и hard1.txt остались.

Более того, если обратиться к этим жестким ссылкам, например, с помощью утилиты просмотра cat hard.txt , то мы увидим текст, который был у нас изначально в файле.

Это происходит потому, что сам файл — это некоторое пространство занятое на диске, а имя файла и путь к нему – это и есть жесткая ссылка. Поэтому любой файл это есть жесткая ссылка на место на диске. Мы можем создать к нашему inode сколько угодно ссылок и пока мы их всех не удалим наш файл будет на месте.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Источник

Жесткие и символические ссылки в Linux

В UNIX-системах, к которым относится и Linux, используется принцип «все является файлом» (собственно файлы, диски, устройства и т.д.). Для расширения возможностей управления доступом к файлам и устройствам используется механизм ссылок. Существуют жесткие и символические ссылки. В данном руководстве мы на простых примерах рассмотрим различия между ними.

Для создания ссылок используется команда ln. Ее синтаксис следующий:

Жесткие ссылки

Жесткая ссылка работает как зеркальная копия оригинального файла. Эти ссылки используют одни и те же индексные дескрипторы (иноды). Изменения в одном из файлов, связанных жесткой ссылкой, отразятся в другом. При удалении жесткой ссылки с другим файлом ничего не произойдет. Жесткие ссылки не могут связывать различные файловые системы. Синтаксис для создания жесткой ссылки следующий

В качестве источника может быть только файл, но не каталог.

Примеры жестких ссылок

Создадим директорию Test и файл sample1 внутри нее:

Теперь создадим жесткую ссылку на sample1 и назовем ее sample 2:

При помощи опции –i команды ls отобразим номера инодов для обоих файлов:

Получим следующий результат:

Из результата видно, что у обоих файлов sample1 и sample2 один номер инода (13058490). Кроме того, у файлов одинаковый размер и права доступа.

Теперь удалим оригинальный sample1

После удаления связанного жесткой ссылкой оригинального файла проверим содержимое «ссылки» sample2:

Должно быть выведено содержимое файла, в примере это «тестовый файл».

  1. Исходя из рассмотренных примеров можно сделать следующий вывод:
  2. Жесткие ссылки используют один номер инода.
  3. Команда ls -l показывает все ссылки, а в столбце ссылок выводит их количество.
  4. У файлов ссылок есть реальное содержимое
  5. Удаление любой ссылки уменьшает количество ссылок, но никак не влияет на другие ссылки.
  6. Нельзя создать жесткую ссылку на директорию.
  7. Даже при удалении оригинального файла жесткая ссылка будет показывать содержимое.
Читайте также:  Тонкая настройка windows 10 для максимальной производительности

Символические ссылки

Символическая, или мягкая ссылка – это действительно ссылка на оригинальный файл (аналогичная ярлыкам в Windows-системах). Символическая ссылка указывает на оригинальный файл, поэтому при удалении этого файла символическая ссылка перестанет работать. При удалении символической ссылки с файлом ничего не произойдет. Это связано с тем, что инод самого файла или директории отличается от инода файла, создаваемого для символической ссылки. Символические ссылки могут связывать разные файловые системы.

Синтаксис для создания символической ссылки такой же как и для создания жесткой ссылки, только используется опция «-s»

В качестве источника может быть файл или каталог.

Примеры символических ссылок

Создадим символическую ссылку (опция -s) на sample2 из предыдущего раздела при помощи следующей команды:

Отобразим номера инодов для обоих файлов:

Результат будет следующим:

Видно, что номера инодов разные, а у символической ссылки другие права доступа (rwxrwxrwx), перед которыми указано l, так как это символическая ссылка.

Теперь можно вывести содержимое файла и символической ссылки:
$ cat sample2
$ cat sample3

Удалим оригинальный файл

А затем проверим содержимое директории Test:

В ней еще будет символическая ссылка sample3, но при попытке вывести ее содержимое вы получите сообщение об отсутствии такого файла или директории:

Таким образом, основные особенности символических ссылок следующие:

  1. Символические ссылки используют различные номера инодов.
  2. Команда ls -l показывает все ссылки со значением 1 во втором столбце, а ссылка указывает на оригинальный файл.
  3. Символическая ссылка содержит путь к оригинальному файлу, но не его содержимое.
  4. Удаление символической ссылки ни на что не влияет, но при удалении оригинального файла она становится «пустой» ссылкой на несуществующий файл.
  5. Можно создать символическую ссылку на директорию.

Заключение

Мы разобрали ключевые различия между жесткими и символическими ссылками. Это поможет вам лучше разобраться с доступом к файлам и запуском программ. Для более подробной информации о команде ln и ее опциях можно обратиться к соответствующей man-странице.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Символические и жесткие ссылки в Linux. Команда ln


Что такое символические и жесткие ссылки в Linux. Чем они отличаются. Как создавать ссылки. Использование команды ln.

Что такое ссылка на файл в Linux

Ссылка на файл в Linux — это указатель на файл. Если проводить аналогию с Windows, то ссылки чем-то похожи на ярлыки. То есть вы создаете ссылку, которая указывает на какой-либо файл или директорию, и можете разместить эту ссылку в другом каталоге. Обращаясь к такой ссылке, вы будете обращаться к настоящему файлу или каталогу.

Ссылки в Linux бывают двух типов: символические и жесткие. Не смотря на то, что оба типа называются ссылками, они имеют существенные отличия друг от друга. Поэтому очень важно понимать, как создавать и использовать тот или иной тип ссылок.

Что такое символические ссылки

Символическая ссылка (symbolic link) — это специальный файл, который является ссылкой на другой файл или каталог (их еще называют целевым файлом, целевым каталогом).

Символические ссылки также называют символьными, мягкими ссылками (soft links) или сим-ссылками (sym-link).

Важно понимать, что символическая ссылка не содержит в себе внутри копии самого файла, на которую она указывает. Она является всего лишь указателем на файл. Не смотря на это, символическая ссылка обладает собственными правами доступа, так как сама является небольшим файлом, который содержит путь до целевого файла.

Возвращаясь к аналогии с ярлыками в Windows, символические ссылки это своего рода ярлыки на файлы. Можно создавать несколько символических ссылок на один файл и эти ссылки могут иметь разные имена.

Связь между символической ссылкой и файлом, на который она указывает, является «мягкой». Если удалить символическую ссылку, то файл, на который она указывает, не удаляется.

Если удалить файл, на который указывает ссылка, то сама ссылка не обновляется и остается на диске. При этом она указывает на уже несуществующий файл. Аналогично, если переименовать или переместить целевой файл, то ссылка не обновляется автоматически.

При создании символических ссылок можно указывать относительный путь до целевого файла. В таком случае ссылка считает, что относительный путь указан относительно каталога, в котором создана сама ссылка (но не относительно каталога, из которого она была создана).

Схематично отношение между файлом, символической ссылкой и данными, которые хранятся в файле, можно показать следующим образом:

Что такое жесткие ссылки

Жесткая ссылка (hard link) является своего рода синонимом для существующего файла. Когда вы создаете жесткую ссылку, создается дополнительный указатель на существующий файл, но не копия файла.

Читайте также:  Change to windows media

Жесткие ссылки выглядят в файловой структуре как еще один файл. Если вы создаете жесткую ссылку в том же каталоге, где находится целевой файл, то они должны иметь разные имена. Жесткая ссылка на файл должна находится в той же файловой системе, где и другие жесткие ссылки на этот файл.

В Linux каждый файл имеет уникальный идентификатор — индексный дескриптор (inode). Это число, которое однозначно идентифицирует файл в файловой системе. Жесткая ссылка и файл, для которой она создавалась имеют одинаковые inode. Поэтому жесткая ссылка имеет те же права доступа, владельца и время последней модификации, что и целевой файл. Различаются только имена файлов. Фактически жесткая ссылка это еще одно имя для файла.

Жесткие ссылки нельзя создавать для директорий.

Жесткая ссылка не может указывать на несуществующий файл.

Жесткие ссылки появились раньше, чем символические, но сейчас уже устаревают. В повседневной работе жесткие ссылки используются редко.

Схематично отношение между исходным файлом, жесткой ссылкой и данными можно показать следующей схемой:

Отличия символических ссылок от жестких

Кратко подведем итог, написанного выше.

Символическая ссылка:

  • Указывает на целевой файл или каталог. Фактически является небольшим файлом, содержащим путь до целевого файла.
  • Не содержит внутри себя содержимого самого файла. Содержит путь к целевому файлу.
  • Имеет собственные права доступа, которые не распространяются на целевой файл.
  • Удаление / переименование / перемещение целевого файла не обновляет автоматически ссылку. Ссылка начинает указывать на несуществующий файл, становится неработающей.
  • Изменение прав доступа у целевого файла не обновляет права доступа у ссылки.
  • Может быть создана для директории.
  • Ссылка и целевой файл имеют разные файловые индексы (inode) в файловой системе.
  • Может указывать на несуществующий файл.
  • Символическая ссылка может использовать относительный путь до целевого файла.

Жесткая ссылка:

  • Является своего рода еще одним именем на файл.
  • Не может указывать на директорию.
  • Нельзя создавать жесткие ссылки между файлами разных файловых систем.
  • Не может указывать на несуществующий файл.
  • Жесткая ссылка и файл, для которого она создавалась, имеют одинаковые индексы (inode) в файловой системе.

Как создавать ссылки в Linux. Команда ln

Для создания ссылок в Linux используется команда ln (от слова link).

Синтаксис команды ln :

Обычно используется только одна опция -s . Полный список опций можно получить, выполнив команду man ln.

Создание символических ссылок

Чтобы создать символическую ссылку, нужно выполнить команду ln с опцией -s :

Например, создадим в текущем каталоге символическую ссылку с именем mylink на файл /home/pingvinus/myfile :

Выполнив команду ls -li , можно увидеть, что ссылка myfile указывает на файл /home/pingvinus/myfile

Обратите внимание, что ссылка и целевой файл имеют разные inode (792300 и 787622. См. число в начале строки).

Если теперь удалить целевой файл, а затем попробовать просмотреть его содержимое, используя ссылку, то получим сообщение о том, что файл не найден:

Пример создания и использования символьной ссылки (при создании ссылки используется относительный путь до целевого файла, если такую ссылку переместить, то она будет невалидна):

Создание жестких ссылок

Чтобы создать жесткую ссылку нужно использовать команду ln без опции -s .

Например, создадим жесткую ссылку с именем hardlinktofile на файл myfile.txt :

Выведем список файлов:

Можно заметить, что hardlinktofile и myfile.txt имеют одинаковый inode=787622, так как являются фактически разными именами для одного файла (inode которого 787622).

Также видно, что на данный inode имеется 2 ссылки (см. цифру 2 в 3-м столбце). Если мы удалим исходный файл, то количество ссылок на него уменьшается на 1, то есть на самом деле файл не удаляется, так как на него больше, чем 1 ссылка. И мы по прежнему можем работать с файлом по имени hardlinktofile.

Обратите внимание, что после выполнения команды rm, количество ссылок на файл стало равно 1.

Пример создания и использования жесткой ссылки:

Как удалить ссылку

Ссылки, как и обычные файлы, можно удалять, используя команду rm :

Создание ссылок через файловый менеджер

Некоторые графические файловые менеджеры поддерживают создание символических ссылок. Чтобы создать символическую ссылку в таком файловом менеджере, достаточно кликнуть правой кнопкой мыши по файлу и выбрать в меню пункт Создать ссылку ( Create Link , Make Link ).

Ссылка создается в том же каталоге, где находится целевой файл. После создания ссылку можно переместить в другой каталог.

Резюме

Ссылки — это удобный инструмент при работе с файлами в Linux. Мы рассмотрели два вида ссылок, которые существуют в Linux. Рассмотрели отличия символических ссылок от жестких. Для создания ссылок используется команда ln . При повседневной работе обычно используются символические ссылки, в то время как жесткие ссылки используются редко.

Источник

Оцените статью