Создать символьную ссылку linux

Создать символьную ссылку 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

В статье показано как создать символическую ссылку в Linux.

Синтаксис

ln [-Ffhinsv] исходный_файл [целевой_файл]

ln [-Ffhinsv] исходный_файл … целевой_каталог

link исходный_файл целевой_файл

Описание

Программа ln создает запись в директории ( ссылку ) с именем, целевой_файл.

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

Каким образом ссылка указывает на исходный_файл, зависит от типа данной ссылки.

Команда ln имеет следующие опции:

-f Если целевой_файл уже существует, удалить его , чтобы можно было создать ссылку.
Данная опция отменяет опцию -i.

-F Если целевой_файл уже существует и является директорией, удалить его, чтобы можно было создать ссылку. Опция -F используется вместе с опциями -f или -i, в случае, если ни одна из них не указана, подразумевается опция -f.

Эта опция не работает без опции -s.

-h Если целевой_файл или целевой_каталог является символической ссылкой, не следовать по ей. Данная опция полезна в сочетании с опцией -f для замены символической ссылки, которая
указывает на каталог.

-i Интерактивный режим. Если целевой_файл существует, пользователю будет выведен запрос на удаление В случае согласия, ln удалит целевой_файл и создаст новую ссылку. Данная опция отменяет действие опции -f.

-n Аналог опции -h, для совместимости с другими реализациями программы ln.

-s Создавать символическую ссылку.

-v Режим вывода информации о ходе выполнения программы ln.

По-умолчанию, программа ln создаёт жёсткие ссылки. Жесткая ссылка на файл, ничем не
отличается от исходного файла; при этом, изменения сделанные в файле, не зависят от имени,
по которому к нему было сделано обращение.

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

Символическая ссылка содержит имя файла, на который ссылается. При выполнении операции
open(2) над символической ссылкой используется оригинальный файл. Вызов stat(2), выполненный
над символической ссылкой, также вернёт исходный файл. Для получения информации о ссылке
можно использовать lstat(2). Для чтения содержимого символической ссылки можно
воспользоваться вызовом readlink(2). В отличии от жестких ссылок, символические,
могут находиться в другой файловой системе и могут указывать на каталоги.

Читайте также:  Как работает усилитель вай фая

С одним или двумя аргументами, программа ln создаёт ссылку на существующий исходный_файл. Имя для ссылки будет взято из аргумента целевой_файл. Если в аргументе целевой_файл, не указана директория, для создания ссылки, будет использована текущая директория, если указан только каталог, будет создана ссылка на последний элемент из исходный_файл.

С более чем двумя аргументами, программа ln создаёт ссылки в целевой_каталог на все указанные
пути в исходный_файл. Ссылки при этом получают имена исходных файлов.

Если программа ln, вызывается в форме link, ей передается ровно два аргумента, передаваемые аргументы не могут быть каталогами, кроме того, в данной форме она не принимает никаких опций. Это простая форма использования.

Совместимость

Опции -h, -i, -n и -v, предназначены для совместимости с другими реализациями программы ln, и не рекомендуются для использование в скриптах.

Примеры

Вот пример создания ссылки на файл

Это пример жесткой ссылки. В реальности он может выглядеть, как пример, так:

user@server:

$ ln /raid/scripts/checker/in.dat /raid/www_tools/checker/in.dat

Но ведь нас интересуют и каталоги. А с ними все немного сложнее, но не бойтесь. Вся сложность только в дополнительном параметре команды nl. Этот параметр -s. Вот пример создания символической ссылки на каталог в linux

user@server:

$ ln -s /raid/scripts/checker /raid/www_tools/checker

После этого, каталог /raid/scripts/checker будет доступен и по этому адресу /raid/www_tools/checker.

Такие ссылки можно создавать и в категории вашего веб каталога и обращаться к файлам или каталогам по ссылкам через HTTP.

Символическая ссылка (еще известная как мягкая ссылка или симлинк) — это особый файл (запись) который указывает на фактическое местоположения файла или папки на диске (как ярлык в Windows).

Символические ссылки постоянно используются для линкования библиотек и часто используются для линкования файлов и папок на удаленной файловой системе примонтированной по NFS.

Команда ln — это стандартная утилита в Linux для создания ссылок.

Дельный Совет: Создаете симлинк к примонтированной NFS шаре? Уже задумывались о производительности? Проверьте скорость ЧТЕНИЯ/ЗАПИСИ на удаленной шаре из командной строки в Linux! Читать далее →

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

Создать Символическую Ссылку в Linux

Легко запомнить: В целом, синтаксис команды ln такой же, как и команд cp или mv , в частности .

Используйте следующий синтаксис для создания символической ссылки в Linux:

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

Если путь к существует и это файл, вы получите ошибку «ln: failed to create symbolic link ‘ ’: File exists».

Если путь к это существующая директория, ссылка будет создана внутри этой директории.

Создать Ссылку на Файл

Создать симлинк к файлу:

Создать Ссылку на Директорию

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

Дельный Совет: Добавили новый диск в /etc/fstab ? Перезагрузка не нужна! Примонтируйте его всего лишь одной командной! Читать далее →

Ссылка на основную публикацию
Создать новую электронную почту на яндексе бесплатно
Всем привет! С вами снова я, Алексей. В этом посте я расскажу вам о том, как создать электронную почту на...
Сколько человек сидит в одноклассниках
Mail.Ru Group исследовала и сравнила аудитории самых популярных в России социальных сетей — «Одноклассники», «Мой Мир», «ВКонтакте», Facebook и Twitter....
Сколько четырехзначных чисел можно составить из нечетных
Условие Решение 1 Решение 2 Решение 3 Поиск в решебнике Популярные решебники Издатель: Н. Я. Виленкин, В. И. Жохов, А....
Создать канал на ютубе регистрация бесплатно
Добрый день, уважаемые читатели и гости моего блога! Если вы попали на эту статью, значит хотите узнать, как зарегистрироваться в...
Adblock detector