- linux-notes.org
- Создание ссылок (symlink) в Unix/Linux
- How to: Linux / UNIX create soft link with ln command
- Two types of links
- How do I create soft link / symbolic link under Unix and Linux?
- How to use the ln command
- Creating Symlink to a directory
- How to overwrite symlinks/Soft link
- How to delete or remove symlinks/soft links
- Getting help about the ln command
- Conclusion
- How to Create Symbolic Links in Linux
- What are Linux Symbolic Links
- How to Create Symbolic Links in Linux?
- Create Symbolik Link in Linux for Files
- Create Symbolic Link in Linux for Folders
- How to Change or Remove Symbolic Link in Linux?
- Wrapping up
- Символические и жесткие ссылки в Linux. Команда ln
- Что такое ссылка на файл в Linux
- Что такое символические ссылки
- Что такое жесткие ссылки
- Отличия символических ссылок от жестких
- Как создавать ссылки в Linux. Команда ln
- Создание символических ссылок
- Создание жестких ссылок
- Как удалить ссылку
- Создание ссылок через файловый менеджер
- Резюме
linux-notes.org
Хотелось бы рассказать как можно создавать ссылки (симлинки) в ОС Unix/Linux. В своей теме «Создание ссылок (symlink) в Unix/Linux» я на готовом примере покажу как это делается. Существуют несколько видов ссылок, и я расскажу в чем разница между ними.
Симлинк или мягкая ссылка представляет собой особый тип файла, который содержит ссылку на другой файл или каталог в виде абсолютного или относительного пути.
Жёсткой ссылкой — это структурная составляющая файла которая описывает его элемент каталога.
Создание ссылок (symlink) в Unix/Linux
В этом подразделе, я расскажу какие бывают симлинки и в чем они отличаются.
Мягкая ссылка (Soft link):
- Мягкие ссылки используют различные номера инод чем основные файлы.
- Мягкие ссылки становится полезными, если исходный файл был удален.
- Мягкие ссылки могут быть созданы из каталогов.
- Мягкая ссылка может быть создана на пересечении файловых систем.
Для того чтобы создать симлинк в линукс используется следующая команда:
И так, я создал симлинк linux-notes.org.conf на на тот же файл но который будет расположен в другой директории. После создания симлинка, необходимо сменить права на него:
Для проверки номера иноды:
Я создал симлинк на файл, так же, можно создавать симлинка на целую папку, для этого используйте:
И так, я создал симлинк symlink-to-opt-dir на папку /opt/directory. После создания симлинка, необходимо сменить права на него:
Вот и все, очень просто, и полезно.
Для проверки номера иноды:
Чтобы удалить, используйте:
И аналогично для каталогов.
Если вы удалите мягкую ссылку (/home/captain/linux-notes.org-softlink.txt), то сам файл данных будет по-прежнему находится там же (/home/captain/linux-notes.org.txt). Тем не менее, если вы удалите /home/captain/linux-notes.org.txt, то /home/captain/linux-notes.org-softlink.txt станет сломанной ссылкой и данные будут потеряны.
Жесткие ссылки (Hard Links):
- Жесткие ссылки использует тот же номер иноды что и основные файлы.
- Нельзя создать жесткие ссылки на каталоги.
- Жесткие ссылки не могут быть созданы на пересечении файловых систем.
- Жесткие ссылки всегда относится к источнику, даже если они перемещаются или удаляется.
Чтобы создать «жесткую ссылку», используйте:
Проверяем номер иноды:
Оба файла имеют одинаковые иноды (одинаковое количество индексных дескрипторов). Если нужно удалить «жесткую ссылку», то используйте команду:
Если вы удалите жесткую ссылку, ваши данные будут там. Если вы удалите /home/captain/linux-notes.org.txt то файл будет по-прежнему доступен через жесткую ссылку
Жесткие ссылки (Hardlink) vs Мягкие ссылки (Softlink) в UNIX/Linux
- Как я говорил ранее, жесткие ссылки не могут быть созданы для директорий.
- Жесткие ссылки не могут использоваться на пересечении границ файловых систем ( Нельзя создать сылку /tmp и примонтированную на /tmp ко 2-му HDD который смонтирован на/harddisk2).
- Символические ссылки (мягкие ссылки) ссылаются на символичный путь с указанием абстрактного расположение другого файла.
- Жесткие ссылки, ссылаются к определенному местоположению физических данных.
На этом, моя тема «Создание ссылок (symlink) в Unix/Linux» завершена. Не сильно сложная тема, но очень полезная.
Источник
How to: Linux / UNIX create soft link with ln command
Symbolic links can be made to directories as well as to files on different filesystems or different partitions.
Two types of links
- symbolic links (also known as “soft links” or “symlinks”): Refer to a symbolic path indicating the abstract location of another file.
- hard links : Refer to the specific location of physical data.
How do I create soft link / symbolic link under Unix and Linux?
Soft links are created with the ln command. For example, the following would create a soft link named link1 to a file named file1, both in the current directory
$ ln -s file1 link1
To verify new soft link run:
$ ls -l file1 link1
Sample outputs:
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
From the above outputs it is clear that a symbolic link named ‘link1’ contains the name of the file named ‘file1’ to which it is linked.
How to use the ln command
So the syntax is as follows to create a symbolic link in Unix or Linux, at the shell prompt:
$ ln -s < source-filename >< symbolic-filename >
For example create a softlink for /webroot/home/httpd/test.com/index.php as /home/vivek/index.php, enter the following command:
$ ln -s /webroot/home/httpd/test.com/index.php /home/vivek/index.php
$ ls -l
Sample outputs:
You can now edit the soft link named /home/vivek/index.php and /webroot/home/httpd/test.com/index.php will get updated:
$ vi /home/vivek/index.php
Your actual file /webroot/home/httpd/test.com/index.php remains on disk even if you deleted the soft link /home/vivek/index.php using the rm command:
$ rm /home/vivek/index.php ## ##
## But original/actual file remains as it is ##
$ ls -l /webroot/home/httpd/test.com/index.php
Creating Symlink to a directory
The syntax remains same:
$ ln -s
For example, create a symbolic link from the /home/lighttpd/http/users/vivek/php/app/ directory to the /app/ directory you would run:
$ ln -s /home/lighttpd/http/users/vivek/php/app/ /app/
Now I can edit files using /app/
$ cd /app/
$ ls -l
$ vi config.php
How to overwrite symlinks/Soft link
Pass the -f to the ln command to overwrite links:
ln -f -s /path/to/my-cool-file.txt link.txt
How to delete or remove symlinks/soft links
Use the rm command to delete a file including symlinks:
rm my-link-name
unlink /app/
rm /home/vivek/index.php
Getting help about the ln command
Type the following ln command:
$ man ln
$ ln —help
ln command option | Description |
---|---|
—backup | make a backup of each existing destination file |
-b | like —backup but does not accept an argument |
-d | allow the superuser to attempt to hard link directories (note: will probably fail due to system restrictions, even for the superuser) |
-f | remove existing destination files |
-i | prompt whether to remove destinations |
-L | dereference TARGETs that are symbolic links |
-n | treat LINK_NAME as a normal file if it is a symbolic link to a directory |
-P | make hard links directly to symbolic links |
-r | create symbolic links relative to link location |
-s | make symbolic links instead of hard links |
-S | override the usual backup suffix |
-t | specify the DIRECTORY in which to create the links |
-T | treat LINK_NAME as a normal file always |
-v | print name of each linked file |
—help | display this help and exit |
—version | output version information and exit |
Conclusion
You learned how to create a symbolic link in Linux using the ln command by passing the -s option. See ln command man page here for more information.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
How to Create Symbolic Links in Linux
Learning Linux symbolic commands is a great way of improving your potential 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.
These links are stored in the mainframe, so even if the original file is deleted, you’ll have a backup for most of the important files. Symbolic links help create invalid link pathways to store pieces of information as per the requirement of the user.
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 Symbolik 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:
Wrapping up
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!
Edward is an expert communicator with years of experience in IT as a writer, marketer, and Linux enthusiast. IT is a core pillar of his life, personal and professional. Edward’s goal is to encourage millions to achieve an impactful online presence. He also really loves dogs, guitars, and everything related to space.
Источник
Символические и жесткие ссылки в Linux. Команда ln
Что такое символические и жесткие ссылки в 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 . При повседневной работе обычно используются символические ссылки, в то время как жесткие ссылки используются редко.
Источник