Главная страница » Что такое символьная ссылка в linux

Что такое символьная ссылка в linux

  • автор:

What is a Link in Linux ?

A link in Linux is pointers pointing to a file or a directory.

When do we use Links in linux ?

well there are a lot more examples which we will discuss further in this article but for now a few uses are to create a convenient path to a directory buried deep within the file hierarchy; other uses for links include:

  • Linking libraries
  • Making sure files are in constant locations (without having to move the original)
  • Keeping a “copy” of a single file in multiple locations

Wait a second so are they just as same as “Short -cuts” ?��

In a way, yes…but as Gandalf says

Let me explain. Say, for instance, you have an external drive, attached to your Windows machine. On that drive is a folder called Homework��. If you create a shortcut to the directory on your desktop, when you click to open the shortcut, your file manager will open to the Music directory on your external drive.

Now, say you have that drive attached to a Linux machine. That drive is mounted to say, /data and on that drive is the folder Homework. You create a link to that location in your home directory — so you how have a link from

/Homework that points to /data/Homework. If you open the shortcut in your home directory, it opens the file manager in

/Homework, instead of /data/Homework. Any changes you make in

/Homework will automatically be reflected in /data/Homework. And that is the big difference.

Types of Links

In Linux there are two different types of links:

  • Hard links
  • Symbolic links

Hard link

Can only link to files (and not directories)

Cannot reference a file on a different disk or volume, and they reference the same inode as the original source.

A hard link will continue to remain usable, even if the original file is removed.

Command to create a hard link is:

SymLink or Symbolic Link

Can link to directories

Reference a file/folder on a different disk or volume

Will exist as a broken (unusable) link if the original location is deleted

Reference abstract filenames and directories (as opposed to physical locations), and are given their own, unique inode.

  • Command to create a Soft link is:

The primary difference between hard and symbolic link creation, is that you use the -s option.

What is an inode you ask , An inode is a data structure that stores various information about a file in Linux, such as the access mode (read, write, execute permissions), ownership, file type, file size, group, number of links, etc. Each inode is identified by an integer number. An inode is assigned to a file when it is created

One interesting thing of note is how inodes are treated the different types of links. the inode for the hard links are the same, whereas the inodes for the symbolic links are different. This can be further illustrated by removing the original location of the symbolic link. When you do that, the soft link goes away (although the broken referral link file remains behind). Why? The reference inode the symbolic link pointed to no longer exists.

Unlike with hard links, if you delete the original file or directory, the symbolic link will remain, however it will now be considered a broken link and will be unusable. Remember, with hard links, you can remove the original and the link will remain and still be usable.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Жесткая ссылка в Linux

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

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

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

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

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

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

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

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

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

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

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

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

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

Создание жесткой ссылки в Linux

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

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

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

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

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

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

Резюме

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

How to Create Linux Symlinks (Symbolic Links) for Files and Directories

How to Create Linux Symlinks (Symbolic Links) for Files and Directories

Knowing how to create a symbolic link using Linux commands is a great way of increasing your knowledge in the Linux terminal. In this tutorial, we’ll cover a few commands to learn symbolic links in a quick and easy way. Before we begin, let’s overview what are symbolic links.

What are Linux Symbolic Links

Symbolic Links are not only helpful in creating shortcuts and file management in operating systems like Linux. They also serve as a way to create various locations for primary user folders, for instance, Documents, Pictures, Downloads, and much more!

Symbolic Links act like a string creating pathways for different files, folders, and directories in the computer system. They are capable of creating and storing multiple files in different places refer to one single file. Thus, increasing efficiency by locating all the specific documents in one command.

Due to the user-friendly features in Linux, even Microsoft is following it to create Symbolic Links. Symbolic links, also known as Soft links or Symlinks, are not unique to Linux but they are just like a Search option in Windows where one can search a specific file or directory in a disk by executing various commands.

How to Create Symbolic Links in Linux?

Let’s look at how you can create file and folder links in Linux:

Create Symbolic Link in Linux for Files

Generally, to create links use we use the ln command and the -s option to specify Symbolic links. This is the easiest way to ensure a flexible approach that allows experimenting with the language as much as possible. There is nothing hard in creating Symbolic links in Linux – you just need to follow one simple step.

The ln command in Linux creates links between source files and directories.

  • -s – the command for Symbolic Links.
  • [target file] – name of the existing file for which you are creating the link
  • [Symbolic filename] – name of the symbolic link.

Created links can be verified by directory listing using detailed list command:

However, if you do not specify the [Symbolic filename], the command will automatically create a new link in the existing directory.

Create Symbolic Link in Linux for Folders

Creating symbolic links for folders is not difficult either. The command used to create the folder symbolic link is:

For example, to link the /user/local/downloads/logo directory to /devisers folder, use the following command:

Once a Symbolic link is created and attached to the folder /devisers, it will lead to /user/local/downloads/logo. When the user changes directory – cd – to /devisers, the system will automatically change to the specific file and write it in the command directory.

Symbolic link options are called command line switches. Here are the most common ones and their descriptions:

Command Switch Description
–backup[=CONTROL] backup each existing destination file
-d, -F, –directory superuser is allowed to attempt hard link
-f, –force existing destination file is removed
-I, –interactive prompt before removing destination files
-L, –logical deference targets that are symbolic links
-n, –non-dereference symbolic links to directory are treated as files
-P, –physical make hard links directly to symbolic links
-r, –relative create symbolic links relative to link location
-s, –symbol make symbolic links instead of hard links
-S, –suffix=SUFFIX override usual backup suffix
-v, –verbose print name of each linked file

How to Change or Remove Symbolic Link in Linux?

You can remove existing links attached to files or directories by the unlink or rm command. This is how you can do it with the unlink command:

Removing symbolic link using the rm command is similar to the unlink command which is as under:

Conclusion

Remember, if the source is no longer in the current location, then you should delete the symbolic files to avoid creating duplicates, which might slow down your work.

Linux is a wonderful platform for creating an interactive and dynamic application, where you can experiment and innovate. A strong foundation is critical. Learn the basic of the language thoroughly to use it to its full potential. We hope this tutorial helped you improve your skills with another useful tool!

Learn More Linux Commands for File Management

Edward is a content editor with years of experience in IT writing, marketing, and Linux system administration. His goal is to encourage readers to establish an impactful online presence. He also really loves dogs, guitars, and everything related to space.

Символьные ссылки и команда ln

Никак не могу врубиться в понятие символьной ссылки. Ну вот, допустим, я создаю файлы file1.txt с содержанием This is the first file и файл file2.txt с содержанием this is the second file .

Далее ввожу команду ln file1.txt file2.txt и на меня ругается Linux, говорит, что не получилось создать жесткую ссылку. Что мне надо добавить в первый файл, чтобы он ссылался на второй ? В интернете почти все примеры с ln -s . Зачем нужен аргумент -s ?

Был бы очень благодерн, если кто-нибудь объяснил бы на примере.

Пожалуй внесу и свою лепту, так как буквально позавчера разбирался что к чему крепится и конспектировал всё .

Простой исчерпывающий пример — лучшее объяснение: как говорится, лучше один раз пощупать, чем сто раз посмотреть.

Для начала создадим где-нибудь какую-нибудь папку для экспериментов (у меня, например, такая есть всегда — Tests , в домашнем каталоге):

Теперь создадим в ней файл source.txt с текстом 1 :

По умолчанию (при вызове без параметров) команда ln создаёт «жёсткую ссылку» («hard link»):

Жёсткая ссылка — хм . что за фигня.

A hard link is a link file created with the Linux or Unix ln command that points to a file’s inode.

Источник: computerhope.com.

Жёсткая ссылка — это файл, созданный с помощью команды Linux (или Unix) ln , который указывает на «inode» исходного файла.

OK. что такое «inode» файла.

Short for index node, an inode is information contained within a Unix system that contains details about each file, such as the node, owner, file, location of file, etc.

Источник: computerhope.com.

Сокращение от «index node»; inode — это информация внутри Unix-систем (внутри операционной системы), которая содержит детальное описание каждого файла; это описание включает в себя информацию о «node» файла, информацию о владельце файла, некоторую информацию о самом файле, информацию о месте расположения файла, и прочее.

OK. что такое «node» файла.

A node or node address is a name or number that identifies a specific computer or terminal in a group of interconnected computers on a network.

Источник: computerhope.com.

Node или node address — это имя или номер, который идентифицирует конкретный компьютер или терминал в группе взаимосвязанных по сети компьютеров.

То есть это некий идентификатор файла в системе .

Фу-у-у, вроде с теорией более-менее разобрались .

Итак, у нас на данный момент в папке Tests имеется файл source.txt с текстом 1 и жёсткая ссылка на него hard-link.txt .

Изменения как в source.txt , так и в hard-link.txt синхронизируются — ничего удивительного.

Если мы перенесём (удалим из текущей директории) любой из файлов в рамках нашей точки монтирования, то на втором файле это никак не скажется и синхронизация будет работать (имеется в виду если мы переносили файл конечно). Опять же — ничего удивительного: файл продолжает существовать пока на него указывает хоть одна ссылка (жёсткая).

Так в чём собственно прикол? Прикол в том, что как уже упоминалось выше, жёсткая ссылка ссылается на индекс файла (inode). Поэтому, например, если мы удалим любой из файлов, а затем создадим файл в этом же месте файл с таким же именем (и расширением), то кажется, что он должен быть синхронизирован с другим файлом, но не тут то было — связь потеряна: так как новый файл — новый индекс (то же самое и при копировании файла — создаётся новый файл с новым индексом и связь теряется).

Перейдём к символическим ссылкам .

При вызове ln с параметром -s или —symbolic будет создана символическая ссылка:

Alternatively referred to as a soft link or symlink, a symbolic link is a file that links to another file or directory using its path. Unlike a hard link, a symbolic link can link to any file or directory on any computer. If you are more familiar with Microsoft Windows you can think of a symbolic link as a shortcut in Linux. In Linux and Unix symbolic links are created with the ln command. In the Windows command line you can use the mklink command to create symbolic link from the command line.

Источник: computerhope.com.

Альтернативное название soft link (мягкая/гибкая ссылка) или symlink (симлинк); символическая ссылка — это файл, который связывается с другим файлом или директорией используя путь (адрес места расположения) последнего. В отличие от жёсткой ссылки, символическая ссылка может ссылаться на любой файл или директорию, находящуюся на любом компьютере. Если вы хорошо знакомы с Microsoft Windows, то вы можете думать о символических ссылках как о ярлыках в Linux. В Linux и Unix символические ссылки создаются с помощью команды ln . В командной строке Windows вы можете использовать команду mklink для создания символической ссылки через командную строку.

Иными словами символическая ссылка ссылается на адрес файла, а не индекс файла.

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

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