0

Жесткие и символьные ссылки в linux

Содержание


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

В 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 . При повседневной работе обычно используются символические ссылки, в то время как жесткие ссылки используются редко.

Использование нескольких имен для одного файла

Серия контента:

Этот контент является частью # из серии # статей: Изучаем Linux, 101

Этот контент является частью серии: Изучаем Linux, 101

Следите за выходом новых статей этой серии.

Об этой серии

Эта серия статей поможет вам освоить задачи администрирования операционной системы Linux. Вы также можете использовать материал этих статей для подготовки к экзаменам первого уровня сертификации профессионального института Linux (LPIC-1) .

Чтобы посмотреть описания статей этой серии и получить ссылки на них, обратитесь к нашему перечню материалов для подготовки к экзаменам LPIC-1 . Этот перечень постоянно дополняется новыми статьями по мере их готовности и содержит самые последние (по состоянию на апрель 2009 года) цели экзаменов сертификации LPIC-1. Если какая-либо статья отсутствует в перечне, можно найти ее более раннюю версию, соответствующую предыдущим целям LPIC-1 (до апреля 2009 года), обратившись к нашим руководствам для подготовки к экзаменам института Linux Professional Institute .

Краткий обзор

Из этой статьи вы узнаете о том, как создавать жесткие и символические ссылки в Linux и работать с ними. Вы научитесь:

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

Эта статья поможет вам подготовиться к сдаче экзамена LPI 101 на администратора начального уровня (LPIC-1) и содержит материалы цели 104.6 темы 104. Цель имеет вес 2.

Необходимые условия

Чтобы извлечь наибольшую пользу из наших статей, необходимо обладать базовыми знаниями о Linux и иметь работоспособный компьютер с Linux, на котором можно будет выполнять все встречающиеся команды. Иногда различные версии программ выводят результаты по-разному, поэтому содержимое листингов и рисунков может отличаться от того, что вы увидите на вашем компьютере. В частности, результаты выполнения многих примеров этой статьи сильно зависят от того, какие пакеты уже были установлены в операционной системе. Хотя результаты, полученные в вашей операционной системе, могут отличаться, вы должны уловить наиболее важные общие моменты.

Краткая информация о ссылках

Как связаться с Яном

Ян – один из наших наиболее популярных и плодовитых авторов. Ознакомьтесь со всеми статьями Яна (EN), опубликованными на сайте developerWorks. Вы можете найти контактные данные в профиле Яна и связаться с ним, а также с другими авторами и участниками ресурса My developerWorks.

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

Ссылки – это просто дополнительные записи каталога, позволяющие обращаться к файлам или директориям по нескольким именам. Жесткая ссылка – это запись каталога, указывающая на дескриптор inode, тогда как мягкая, или символическая ссылка – это запись каталога, указывающая на имя объекта с другим inode. Конкретные механизмы хранения дополнительных имен зависят как от типа файловой системы, так и от длины имени. Для символических ссылок также используется термин symlinks.

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

Мягкая ссылка (symlink) просто указывает на имя другого файла или директории, а не на его inode. В отличие от жестких ссылок, мягкие ссылки могут указывать на объекты разных файловых систем. Удаление мягкой ссылки не приводит к удалению файла или директории, на которую она указывает, а удаление целевого объекта не приводит к автоматическому удалению мягких ссылок.

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

Сначала я объясню, как создавать жесткие и мягкие ссылки, а потом научу вас находить и использовать их.

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

Для создания дополнительных жестких ссылок на существующий файл (но не на директорию, даже не смотря на то, что записи . и .. существуют в системе в виде жестких ссылок) используется команда ln .

В листинге 1 мы создаем директорию, содержащую два файла и поддиректорию subdir с двумя жесткими ссылками на файл file1; одна жесткая ссылка создается в самой директории, а другая – в поддиректории subdir. Затем в файлы file1 и file3 мы добавляем два разных слова и выводим содержимое ссылки, расположенной в поддиректории subdir. В результате мы видим, что оба файла и ссылка содержат одни и те же данные.

Листинг 1. Создание жестких ссылок

Если вы попытаетесь создать жесткую ссылку, указывающую на объект за пределами файловой системы, или жесткую ссылку для директории, то вы получите ошибку. Из листинга 2 видно, что моя домашняя директория и директория research располагаются в различных файловой системах, поэтому попытка создать для них жесткие ссылки оканчивается неудачей, равно как и попытка создать жесткую ссылку для директории lpi104-6.

Листинг 2. Ошибки при создании жестких ссылок

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

Для создания символических ссылок используется команда ln с опцией -s . При создании символических ссылок используются имена файлов или директорий, которые могут быть как абсолютными, так и относительными. Если вы используете относительные имена, то, как правило, подразумевается, что создаваемые ссылки будут располагаться в текущей рабочей директории; в противном случае создаваемые вами ссылки будут относительными по отношению к другой точке файловой системы. В листинге 3 показаны два способа создания символических ссылок на файл file1, а также то, как вместо двух жестких ссылок (которые мы не смогли создать в листинге 2) создать две символические ссылки.

Читайте также:  Имя фамилия для фейка вконтакте
Листинг 3. Создание символических ссылок

По-прежнему для обращения к файлу или директории можно использовать любые имена ссылок или конечных файлов и директорий. В листинге 4 приведены некоторые примеры.

Листинг 4. Использование символических ссылок

Теперь создадим символическую ссылку, используя относительные пути, когда наша рабочая директория не является директорией, в которой мы хотим создать ссылку. В следующем разделе мы посмотрим, к чему это приведет.

Листинг 5. Создание неправильной символической ссылки

Определение ссылок

В предыдущем разделе было показано, как создавать ссылки, а теперь я объясню, как различать их.

Поиск информации

Сегодня во многих операционных системах для команды ls существует псевдоним ls –color=auto , который отображает различные типы объектов файловой системы разным цветом. Цвета каждого объекта можно настраивать. При использовании этой опции жесткие ссылки могут отображаться белым цветом на темно-синем фоне, а символические ссылки – голубым цветом на белом фоне, как показано на рисунке 1.

Рисунок 1. Использование опции –colors для определения ссылок

Хотя люди с хорошим зрением могут использовать и различать цвета, кому-то этот вариант не подойдет; а использовать цвета в командных сценариях или программах вообще бессмысленно. Если не брать в расчет цветовой вариант, то вам потребуется более подробная информация, например, информация, выводимая командой ls -l . В листинге 6 мы явно запретили выводить информацию в цвете, но зато всегда можно явно вызвать команду /bin/ls .

Листинг 6. Определение ссылок

Второй столбец вывода в листинге 6 содержит счетчик ссылок, показывающий количество жестких ссылок на файл. Таким образом, мы видим, что файлы file1, file3 и file3sub имеют по нескольку жестких ссылок, указывающих на представляемые ими объекты; тем не менее, этой информации еще недостаточно, чтобы понять, что все они представляют собой один и тот же объект. Если удалить файл, счетчик ссылок которого имеет значение больше 1, то счетчик ссылок в индексном дескрипторе понизится на 1, но файл не будет удален, пока счетчик не достигнет 0. Значения счетчиков всех других жестких ссылок на этот файл понизятся на 1.

Символические ссылки обозначаются символом ‘l’ (буква L в нижнем регистре) в первом столбце вывода команды ls -l . Кроме того, после символов -> выводится целевой объект ссылки, например, file4 -> /home/ian/lpi104-6/file1. Другой подсказкой может служить то, что размер ссылки в байтах равен количеству символов в имени ее целевого объекта. Заметьте, что счетчик ссылок в выводе содержимого директории не обновляется для символических ссылок. Удаление ссылки никак не влияет на целевой объект. Символические ссылки не защищают файлы от удаления; если целевой файл был перемещен или удален, ссылка становится "битой". По этой причине во многих операционных системах информация о содержимом директории выводится в цвете (как правило, голубым цветом отображаются рабочие ссылки, а красным цветом – битые).

Для вывода номеров индексных дескрипторов inode файлов и директорий используйте команду ls с опцией -i . В листинге 7 показан как краткий, так и подробный вывод содержимого директории lpi104-6.

Листинг 7. Вывод информации inode

Для поиска символических ссылок можно также использовать команду find с выражением -type l , как показано в листинге 8.

Листинг 8. Использование команды find для поиска символических ссылок

Битые символические ссылки

В листинге 5 мы создали заведомо неправильную символическую ссылку. Это лишь один из примеров "битой" символической ссылки. Поскольку жесткие ссылки всегда указывают на дескриптор inode, представляющий собой файл, они всегда действительны. Однако символические ссылки могут оказаться некорректными по многим причинам, например:

  • На момент создания ссылки не существует либо исходного файла, либо целевого объекта этой ссылки (ситуация из листинга 5).
  • Целевой объект ссылки был удален или переименован.
  • Некоторые элементы пути к целевому объекту были удалены или переименованы.

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

Если вы используете цветной вывод содержимого директорий, то "битые" символические ссылки, как правило, отображаются красным цветом на черном фоне, как в случае с файлом file6 (рисунок 1). В противном случае для раскрытия информации о ссылке и ее целевом объекте необходимо использовать опцию -H или -L команды ls . Опция -H раскрывает информацию о ссылке, указанной в командной строке, а опция -L дополнительно выполняет эти же действия для всех ссылок, являющихся частью вывода. В листинге 9 продемонстрированы различия при использовании этих двух опций.

Листинг 9. Раскрытие информации о ссылках с помощью команд ls -H и ls –L

Обратите внимание на сообщение об ошибке, которое говорит о том, что файл file6 не существует, а также на строку вывода с символами ‘?’, означающими, что этот файл не найден.

И последнее замечание, касающееся "битых" символических ссылок. Все попытки чтения из файла окончатся неудачей, поскольку он не существует. Однако попытки записи в этот файл (при наличии необходимых разрешений) окажутся успешными, как показано в листинге 10. Заметьте, что прежде чем вы сможете записать данные в файл, вы должны создать директорию lpi104-6/lpi104-6.

Листинг 10. Чтение и запись в битую символическую ссылку

Поиск всех ссылок на объект

Для поиска файлов, являющихся жесткими ссылками на определенный inode, можно использовать команду find с опцией -samefile и именем файла или с опцией -inum и номером inode, как показано в листинге 11.

Листинг 11. Поиск всех жестких ссылок на файл

Для поиска файлов, являющихся символическими ссылками на определенный файл, используйте команду find с опцией -lname и именем файла, как показано в листинге 12. Поскольку в ссылках могут использоваться как относительные, так и абсолютные пути, стоит добавить в начало имени файла символ звездочки, чтобы найти все совпадения без исключения.

Листинг 12. Поиск всех символических ссылок на файл или директорию

Различия между копированием и созданием ссылок

В зависимости от конкретных задач иногда лучше использовать ссылки, а иногда копировать файлы. Главное отличие заключается в том, что с помощью ссылок для одного и того же файла можно задать несколько имен, тогда как при копировании создается два объекта с идентичными данными, но с разными именами. Несомненно, следует использовать копирование для создания резервных копий, а также при тестировании новых программ, чтобы не подвергать риску рабочие данные. Ссылки имеет смысл использовать тогда, когда необходимо создать псевдоним для файла (или директории), возможно, более удобный в использовании. В следующем разделе мы рассмотрим несколько других примеров использования ссылок.

Как вы уже видели, при обновлении файла обновляются и все ссылки на него, чего не происходит в случае его копирования. Также помните о том, что символические ссылки могут оказаться "битыми", но в результате последующих операций записи может быть создан новый файл. Будьте аккуратны при использовании ссылок.

Ссылки и администрирование

Ссылки, в особенности символические, часто используются для администрирования Linux-систем. Например, ссылки часто используются для команд, что позволяет пользователям не знать номер версии используемой команды, но при необходимости получать доступ к различным ее версиям, указывая обычное имя. Как видно из листинга 13, команда gcc в моей системе – это символическая ссылка, которая имеет три различных имени.

Читайте также:  Завис excel что делать
Листинг 13. Использование псевдонимов для различных версий команд

В других случаях ссылки могут использоваться тогда, когда несколько команд с разными именами используют одинаковый код, лежащий в их основе; например, это могут быть различные команды для остановки и перезагрузки системы. Иногда новое имя команды, например genisofs, замещает собой старое имя этой же команды (mkisofs), которое продолжает использоваться в качестве ссылки на новую команду. Ссылки активно используются системой альтернатив, позволяя вам выбирать для использования одну из нескольких альтернативных команд, таких как java . Некоторые примеры приведены в листинге 14.

Листинг 14. Примеры использования псевдонимов команд

Для работы с библиотеками также активно используются символические ссылки, которые позволяют программам обращаться к библиотекам по их общему имени при обновлении версии, а также управляют библиотеками в 64-разрядных системах, в которых могут выполняться 32-разрядные программы. Некоторые примеры приведены в листинге 15. Обратите внимание на то, что в некоторых ссылках используются абсолютные пути, а в некоторых – относительные.

Листинг 15. Ссылки на библиотеки

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

Ресурсы для скачивания

Похожие темы

  • Оригинал статьи: Learn Linux, 101: Create and change hard and symbolic links (EN).
  • На Web-сайте программы сертификации LPIC (EN) вы найдете подробные цели, списки задач и примерные вопросы всех трех уровней сертификации на администратора Linux-систем профессионального института Linux. В частности, на этом сайте представлены цели экзаменов LPI 101 и LPI 102 по состоянию на апрель 2009 года. Всегда обращайтесь к Web-сайту программы сертификации LPIC, чтобы узнать последние цели.
  • Просмотрите всю серию статей для подготовки к экзаменам института LPI (EN) на сайте developerWorks, основанных на предыдущих целях, определенных до апреля 2009 года, чтобы изучить основы администрирования Linux и подготовиться к экзаменам для получения сертификата администратора Linux.
  • Дополнительные примеры использования символических ссылок для администрирования Linux-систем вы можете найти в следующих статьях:
  • "Изучаем Linux, 101: Управление общими библиотеками" (developerWorks, август 2011 г.)
  • "Dissecting shared libraries" (EN) (developerWorks, январь 2005 г.)
  • "Boot Linux faster" (EN) (developerWorks, сентябрь 2003 г.)

Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

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

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

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

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

Вот основные особенности символических ссылок:

  • Могут ссылаться на файлы и каталоги;
  • После удаления, перемещения или переименования файла становятся недействительными;
  • Права доступа и номер inode отличаются от исходного файла;
  • При изменении прав доступа для исходного файла, права на ссылку останутся неизменными;
  • Можно ссылаться на другие разделы диска;
  • Содержат только имя файла, а не его содержимое.

Теперь давайте рассмотрим жесткие ссылки.

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

Этот тип ссылок реализован на более низком уровне файловой системы. Файл размещен только в определенном месте жесткого диска. Но на это место могут ссылаться несколько ссылок из файловой системы. Каждая из ссылок – это отдельный файл, но ведут они к одному участку жесткого диска. Файл можно перемещать между каталогами, и все ссылки останутся рабочими, поскольку для них неважно имя. Рассмотрим особенности:

  • Работают только в пределах одной файловой системы;
  • Нельзя ссылаться на каталоги;
  • Имеют ту же информацию inode и набор разрешений что и у исходного файла;
  • Разрешения на ссылку изменяться при изменении разрешений файла;
  • Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.

Использование ссылок в Linux

Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:

$ ln опции файл_источник файл_ссылки

Рассмотрим опции утилиты:

  • -d – разрешить создавать жесткие ссылки для директорий суперпользователю;
  • -f – удалять существующие ссылки;
  • -i – спрашивать нужно ли удалять существующие ссылки;
  • -P – создать жесткую ссылку;
  • -r – создать символическую ссылку с относительным путем к файлу;
  • -s – создать символическую ссылку.

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

Сначала создайте папку test и перейдите в нее:

mkdir test && cd test

Затем создайте файл с именем source с каким-либо текстом:

echo "текст текст текст текст" > source
$ cat source

Файл готов, дальше создадим символическую ссылку Linux, для этого используется команда ln с опцией -s:

ln -s source softlink

Попробуем посмотреть содержимое файла по ссылке:

Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:

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

Теперь удалите исходный файл и посмотрите что будет:

Вы получите ошибку, что такого файла не существует, потому что мы действительно удалили исходный файл. Если вы удалите ссылку, то исходный файл останется на месте.

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

Снова создайте файл source с произвольным текстом:

echo "текст текст текст текст" > source
$ cat source

Теперь создадим жесткую ссылку Linux. Для этого достаточно вызвать утилиту без параметров:

ln source hardlink

Посмотрите содержимое файла:

Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:

Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:

Затем посмотрите содержимое:

Как видите, ничего не произошло и ссылка по-прежнему указывает на нужный участок диска, это главное отличие жесткой ссылки от символической. Мы можем сделать вывод, что жесткая ссылка linux это обычный файл. Каждый файл имеет как минимум одну ссылку, но для некоторых мы можем создать несколько ссылок.

Выводы

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

На завершение видео про ссылки в Linux:

admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *