- Символические и жесткие ссылки Linux
- Символические ссылки
- Жесткие ссылки
- Использование ссылок в Linux
- Создание символических ссылок
- Создание жестких ссылок
- Выводы
- Symbolic Link in Linux
- Using the “ln” Command
- Creating a Symlink to a File
- Creating a Symlink to a Directory
- Overwriting Symlinks
- Removing Symlink
- Conclusion
- About the author
- Simran Kaur
Символические и жесткие ссылки Linux
Символические и жесткие ссылки — это особенность файловой системы Linux, которая позволяет размещать один и тот же файл в нескольких директориях. Это очень похоже на ярлыки в Windows, так как файл на самом деле остается там же где и был, но вы можете на него сослаться из любого другого места.
В Linux существует два типа ссылок на файлы. Это символические и жесткие ссылки Linux. Они очень сильно отличаются и каждый тип имеет очень важное значение. В этой небольшой статье мы рассмотрим чем же отличаются эти ссылки, зачем они нужны, а также как создавать ссылки на файлы в Linux.
Символические ссылки
Символические ссылки более всего похожи на обычные ярлыки. Они содержат адрес нужного файла в вашей файловой системе. Когда вы пытаетесь открыть такую ссылку, то открывается целевой файл или папка. Главное ее отличие от жестких ссылок в том, что при удалении целевого файла ссылка останется, но она будет указывать в никуда, поскольку файла на самом деле больше нет.
Вот основные особенности символических ссылок:
- Могут ссылаться на файлы и каталоги;
- После удаления, перемещения или переименования файла становятся недействительными;
- Права доступа и номер inode отличаются от исходного файла;
- При изменении прав доступа для исходного файла, права на ссылку останутся неизменными;
- Можно ссылаться на другие разделы диска;
- Содержат только имя файла, а не его содержимое.
Теперь давайте рассмотрим жесткие ссылки.
Жесткие ссылки
Этот тип ссылок реализован на более низком уровне файловой системы. Файл размещен только в определенном месте жесткого диска. Но на это место могут ссылаться несколько ссылок из файловой системы. Каждая из ссылок — это отдельный файл, но ведут они к одному участку жесткого диска. Файл можно перемещать между каталогами, и все ссылки останутся рабочими, поскольку для них неважно имя. Рассмотрим особенности:
- Работают только в пределах одной файловой системы;
- Нельзя ссылаться на каталоги;
- Имеют ту же информацию inode и набор разрешений что и у исходного файла;
- Разрешения на ссылку изменяться при изменении разрешений файла;
- Можно перемещать и переименовывать и даже удалять файл без вреда ссылке.
Использование ссылок в Linux
Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:
$ ln опции файл_источник файл_ссылки
- -d — разрешить создавать жесткие ссылки для директорий суперпользователю;
- -f — удалять существующие ссылки;
- -i — спрашивать нужно ли удалять существующие ссылки;
- -P — создать жесткую ссылку;
- -r — создать символическую ссылку с относительным путем к файлу;
- -s — создать символическую ссылку.
Создание символических ссылок
Сначала создайте папку test и перейдите в нее:
Затем создайте файл с именем source с каким-либо текстом:
echo «текст текст текст текст» > source
$ cat source
Файл готов, дальше создадим символическую ссылку Linux, для этого используется команда ln с опцией -s:
Попробуем посмотреть содержимое файла по ссылке:
Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:
Несмотря на то, что содержимое одинаковое, здесь мы видим, что адрес иноды и права доступа к файлам отличаются, кроме того, явно показано что это символическая ссылка Linux.
Теперь удалите исходный файл и посмотрите что будет:
Вы получите ошибку, что такого файла не существует, потому что мы действительно удалили исходный файл. Если вы удалите ссылку, то исходный файл останется на месте.
Создание жестких ссылок
Снова создайте файл source с произвольным текстом:
echo «текст текст текст текст» > source
$ cat source
Теперь создадим жесткую ссылку Linux. Для этого достаточно вызвать утилиту без параметров:
Посмотрите содержимое файла:
Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:
Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:
Затем посмотрите содержимое:
Как видите, ничего не произошло и ссылка по-прежнему указывает на нужный участок диска, это главное отличие жесткой ссылки от символической. Мы можем сделать вывод, что жесткая ссылка linux это обычный файл. Каждый файл имеет как минимум одну ссылку, но для некоторых мы можем создать несколько ссылок.
Выводы
Это все, что вам было необходимо знать про символические и жесткие ссылки linux. Надеюсь, вы получили общее представление об этих возможностях файловой системы и сможете использовать их для решения своих задач.
На завершение видео про ссылки в Linux:
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Symbolic Link in Linux
Linux is one of the most stable operating systems available in the market that helps manage files and directories via command-line interface commands. You can use the Linux command-line interface command for creating, removing, or deleting a symbolic link. It also allows you to create a symbolic link called symlink or soft link and points to another file or directory. We focus on various Linux commands to get along with a symlink.
Before moving forward, you must know about various types of symbolic links and their importance in Linux. There are two types of symlink available in Linux. These are:
- Hard Link: you can understand the hard link as the additional name given to the existing file within Linux. You can associate the hard links with two or more file names having the same inode efficiently. One or more hard links can be created for a single file. You cannot create a hard link for directories or files stored on different filesystems or partitions.
- Soft Link: it is considered a shortcut in Windows. It is an indirect pointer for any file or directory. It is different from a hard link because you can use it for pointing files or directories in the different file systems or partitions.
Now, we are moving forward to create or delete the symlinks in Linux.
Using the “ln” Command
Using this command-line utility, you will be able to create links between the files. If you do not specify what type of link you want to create, it will create the hard link by default. So, if you want to create the soft link, specify the “-s” option after the command.
Use the below-mentioned syntax for creating links using the “ln” command.
If both the FILE1 and LINK are available, use the “ln” command for creating a link from the file specified as (FILE1) to the file specified as (LINK).
But if you have only the first argument as FILE1 and the second argument as (.), then the link is created to that file present in the current working directory. The created symlink will have the same name as the file’s name to which it points. If the link has been created successfully, there will be no command output and will return zero.
Creating a Symlink to a File
Run the following command for creating a symlink to a file.
In the command mentioned above, specify the “source_file1” with the name of the existing file in the Linux system for which you are going to create the link and replace the parameter “symbolic_link” with the name of the symbolic link.
Here, the symbolic_link parameter is optional in the above command. If you forgot to mention any symbolic link in the command, your current directory would create a new link.
Considering the below example, we will be creating a symbolic link with the name “my_link.txt” to a file named “my_file.txt”.
If you want to confirm the creation of symlink, then you can use the below-mentioned “ls” command.
You will get the output as shown below:
The first character “l”, represents the file type flag with a symbolic link in the above output. The -> symbol will represent the file the symlink represents.
Creating a Symlink to a Directory
You can create the symlink for the directory the same way you create the symlink for the file. For this, mention the directory name as the first parameter in the command and provide the desired symlink as the second parameter in the command.
The example below will help create a symbolic link from the /mnt/my_drive_1/movies directory to the ~/my_movies directory.
Overwriting Symlinks
If you create a symlink link that exists already, you will get an error using the “ln” command. Consider the below example where we are creating the existing symlink again.
You will get the below-mentioned error.
But if you still want to overwrite the destination path of the symlink, you have to provide the “-f” option along with the “ln” command for forcefully implementing it. Consider the below example.
Removing Symlink
If you want to delete or remove the existing symlink, you can either use the “unlink” command or the “rm” command. Follow the below-mentioned “unlink” command syntax.
You can either use the below command using the “rm” command for removing the symlink.
But if you move the source file to a different location in the filesystem, the symbolic file will be left broken and need to be removed using the “rm” command.
Conclusion
In Linux, you can leverage the symbolic links used to link the libraries and make sure that the files are in a consistent place without the need to move or copy the original file. These links are often used to hold multiple copies of the same file but in different places referencing one file. This article has mentioned various commands that will create, delete, and overwrite the symbolic links.
About the author
Simran Kaur
Simran works as a technical writer. The graduate in MS Computer Science from the well known CS hub, aka Silicon Valley, is also an editor of the website. She enjoys writing about any tech topic, including programming, algorithms, cloud, data science, and AI. Travelling, sketching, and gardening are the hobbies that interest her.