- Символические и жесткие ссылки Linux
- Символические ссылки
- Жесткие ссылки
- Использование ссылок в Linux
- Создание символических ссылок
- Создание жестких ссылок
- Выводы
- Команда Ln: как создавать символические ссылки в Linux
- Команда Ln для создания символических ссылок
- Создать символическую ссылку на каталог Linux
- Принудительно перезаписать символические ссылки
- Удаление ссылок
- Soft Links против Hard Links
- Символические ссылки (Soft Links)
- Жесткие ссылки (Hard Links)
- Команда ln: создание ссылок в дистрибутивах Linux
- Команда ln – Жесткие ссылки
- Команда ln – Символические ссылки
- Опции команды ln
Символические и жесткие ссылки 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.
Команда Ln: как создавать символические ссылки в Linux
Символические ссылки используются в Linux для управления файлами и их сопоставления.
В этом руководстве вы узнаете, как использовать команду ln для создания символических ссылок в Linux.
Команда Ln для создания символических ссылок
Чтобы использовать команду ln, откройте окно терминала и введите команду в следующем формате:
- По умолчанию команда ln создает hard link (жесткая ссылка).
- Используйте параметр -s , чтобы создать символическую ссылку, она же soft link.
- Параметр -f заставит команду перезаписать уже существующий файл.
- Source — это файл или каталог, на который делается ссылка.
- Destination — это место для сохранения ссылки — если это поле не заполнено, символическая ссылка сохраняется в текущем рабочем каталоге.
Например, создайте символическую ссылку с помощью:
ln -s test_file.txt link_file.txt
Это создает символическую ссылку link file.text , которая указывает на testfile.txt .
Чтобы проверить, создана ли символическая ссылка, используйте команду ls :
Создать символическую ссылку на каталог Linux
Символическая ссылка может относиться к каталогу. Чтобы создать символическую ссылку на каталог в Linux:
ln -s /mnt/external_drive/stock_photos ~/stock_photos
В этом примере создается символическая ссылка с именем stock_photos в домашнем каталоге ~ / . Ссылка относится к каталогу stock_photos на внешнем диске external_drive .
Примечание. Если система подключена к другому компьютеру, например к корпоративной сети или удаленному серверу, символические ссылки могут быть связаны с ресурсами в этих удаленных системах.
Принудительно перезаписать символические ссылки
Вы можете получить сообщение об ошибке, как показано на изображении ниже:
Сообщение об ошибке означает, что в месте назначения уже есть файл с именем link_file.txt . Используйте параметр -f , чтобы система перезаписывала целевую ссылку:
ln -sf test_file.txt link_file.txt
Удаление ссылок
Если исходный файл будет перемещен, удален или станет недоступным (например, сервер отключится), ссылку нельзя будет использовать. Чтобы удалить символическую ссылку, используйте команду rm (remove) или unlink :
rm link_file.txt unlink link_file.txt
Soft Links против Hard Links
Команду ln можно использовать для создания двух разных типов ссылок:
Символические ссылки (Soft Links)
Символическая ссылка, иногда называемая мягкой ссылкой или soft link, указывает на расположение или путь к исходному файлу. Она работает как гиперссылка в Интернете.
Вот несколько важных аспектов символической ссылки:
- Если файл символьной ссылки удаляется, исходные данные остаются.
- Если исходный файл будет перемещен или удален, символическая ссылка работать не будет.
- Символическая ссылка может относиться к файлу в другой файловой системе.
- Символические ссылки часто используются для быстрого доступа к часто используемым файлам без ввода всего местоположения.
Жесткие ссылки (Hard Links)
Когда файл хранится на жестком диске, происходит несколько вещей:
- Данные физически записываются на диск.
- Создается справочный файл, называемый индексом, который указывает на расположение данных.
- Имя файла создается для ссылки на данные inode.
Жесткая ссылка работает путем создания другого имени файла, которое ссылается на данные inode исходного файла. На практике это похоже на создание копии файла.
Вот несколько важных аспектов жестких ссылок:
- Если исходный файл удален, к данным файла все равно можно будет получить доступ через другие жесткие ссылки.
- Если исходный файл перемещен, жесткие ссылки по-прежнему работают.
- Жесткая ссылка может относиться только к файлу в той же файловой системе.
- Если количество жестких ссылок равно нулю, индексный дескриптор и данные файла удаляются безвозвратно.
Команда ln: создание ссылок в дистрибутивах Linux
Команда ln в дистрибутивах Linux используется для создания ссылок на файлы или директории. Эта команда может быть полезна, когда вам нужно создать ссылку на файл или директорию в другом месте в файловой системе. Таким образом, вы избежите необходимости создавать дубликаты файлов или переносить их в другие директории. Помимо этого, можно создать несколько ссылок командой ln на один и тот же файл или директорию, чтобы иметь к нему доступ из разных мест в файловой системе.
Существует два вида ссылок которые можно создать командой ln – жесткие и символические ссылки. Жесткие ссылки работают только в пределах одной файловой системы. А также, жесткая ссылка не может указывать на директорию. В то время как символические ссылки могут указывать на файлы и директории, расположенные как в пределах, так и за пределами одной файловой системы. Это делает их более гибкими по сравнению с жесткими ссылками.
Команда ln – Жесткие ссылки
Теперь давайте рассмотрим как работать с командой ln для создания ссылок. Для создания жесткой ссылки пишется команда ln, затем указываем исходный файл, на который необходимо создать ссылку, после чего указывается имя самой ссылки. То есть, предположим, file1 – это исходный файл, а file2 – имя новой ссылки, название может быть любым. В качестве примера создадим командой ln ссылку на рабочем столе:
ln file1 ~/»Рабочий стол»/file2
Обратите внимания на то, что рабочий стол указан в кавычках, это необходимо так как в названии директории иметься проблем. В случае, если в названии директории пробел отсутствует, то заключать в кавычки нет необходимости:
Вы можете создать ссылки на несколько файлов, используя команду ln. Например, чтобы создать ссылки на все файлы в директории которые начинаются с буквы “f”, вы можете использовать следующую команду:
Обратите внимания, что используется так называемый шаблон, после первой буквы указывается знак звездочки. Это означает что на все файлы в которых присутствует в начале имени буква “f” будет создана жесткая ссылка.
Команда ln – Символические ссылки
Теперь давайте рассмотрим как создаются символические ссылки. Для создания символической ссылки в команде ln указывается опция “-s”. Подробнее про сами опции будет написано далее. Напомню, что при создании символических ссылок можно использовать и директории. К примеру, создадим командой ln символьную ссылку на директорию “Документы” на рабочем столе системы:
ln -s ~/Документы ~/»Рабочий стол»
В случае, если вы попробуете создать символическую ссылку для несуществующего файла или директории, то при попытке использовать эту ссылку будет получена ошибка “No such file or directory”.
Вы можете использовать команду ls -li для просмотра информации о ссылках. Переходим на рабочий стол и смотрим информацию, символические ссылки будут отличаться знаком “->”, который указывает куда исходит ссылка:
Опции команды ln
Как принято в дистрибутивах Linux, у команды ln также имеются опции, которые облегчают работу с ней. Синтаксис команды ln выглядит следующим образом:
ln [опции] исходный_файл/директория ссылка
Опции могут включать в себя:
- s : создать символическую ссылку (также называемую “мягкой” ссылкой)
- f : удалять существующую ссылку перед созданием новой
- i : запрашивать подтверждение перед заменой существующей ссылки
- n : создавать жесткую ссылку вместо символической
Ниже будут представлены некоторые примеры использования команды ln:
Создание символической ссылки на файл:
ln -s /Директория/файл /Директория
Создание символической ссылки на директорию, где Директория1 – это та, на которую собираемся создать ссылку, а Директория2 – расположение этой ссылки:
ln -s /Директория1 /Директория2
Создание ссылки на родительскую директорию, которая представлена в виде двух точек (..):
Если вы пытаетесь создать ссылку на файл или директорию, а ссылка с таким именем уже существует, вы получите сообщение об ошибке. Однако вы можете использовать опцию -f, чтобы принудительно заменить существующую ссылку. Для примера возьмет те же директории, что и ранее:
ln -sf ~/Документы ~/»Рабочий стол»
Эта опция удалит существующую ссылку, если она существует, и заменит ее новой ссылкой.