как создать жесткую ссылку на файл в linux

Символические и жесткие ссылки Linux

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

Символические ссылки

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

Вот основные особенности символических ссылок:

Теперь давайте рассмотрим жесткие ссылки.

Жесткие ссылки

Использование ссылок в Linux

Теоретические отличия вы знаете, но осталось закрепить все это на практике, поэтому давайте приведем несколько примеров работы со ссылками в Linux. Для создания символических ссылок существует утилита ln. Ее синтаксис очень прост:

$ ln опции файл_источник файл_ссылки

Рассмотрим опции утилиты:

Создание символических ссылок

Сначала создайте папку test и перейдите в нее:

mkdir test && cd test

как создать жесткую ссылку на файл в linux

Затем создайте файл с именем source с каким-либо текстом:

echo «текст текст текст текст» > source
$ cat source

как создать жесткую ссылку на файл в linux

как создать жесткую ссылку на файл в linux

Попробуем посмотреть содержимое файла по ссылке:

как создать жесткую ссылку на файл в linux

Как видите, нет никакой разницы между ней и исходным файлом. Но утилита ls покажет что это действительно ссылка:

как создать жесткую ссылку на файл в linux

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

Теперь удалите исходный файл и посмотрите что будет:

как создать жесткую ссылку на файл в linux

Вы получите ошибку, что такого файла не существует, потому что мы действительно удалили исходный файл. Если вы удалите ссылку, то исходный файл останется на месте.

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

Снова создайте файл source с произвольным текстом:

echo «текст текст текст текст» > source
$ cat source

как создать жесткую ссылку на файл в linux

Теперь создадим жесткую ссылку Linux. Для этого достаточно вызвать утилиту без параметров:

ln source hardlink

как создать жесткую ссылку на файл в linux

Посмотрите содержимое файла:

как создать жесткую ссылку на файл в linux

Данные те же самые, а если мы посмотрим вывод утилиты ls, то увидим что inode и права доступа тоже совпадают:

как создать жесткую ссылку на файл в linux

Если для одного из файлов поменять разрешения, то они изменяться и у другого. Теперь удалите исходный файл:

Затем посмотрите содержимое:

как создать жесткую ссылку на файл в linux

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

Выводы

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

На завершение видео про ссылки в Linux:

Источник

Команда Ln в Linux (Cоздание Cимволических Cсылок)

Ln Command in Linux (Create Symbolic Links)

В этом руководстве мы рассмотрим, как использовать ln команду для создания символических ссылок.

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

Типы ссылок

В системах Linux / UNIX есть два типа ссылок:

Как использовать ln команду

ln Синтаксис команды для создания символических ссылок выглядит следующим образом :

По умолчанию в случае успеха ln не выводит никаких данных и возвращает ноль.

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

Чтобы создать символическую ссылку на данный файл, откройте свой терминал и введите:

Замените source_file на имя существующего файла, для которого вы хотите создать символическую ссылку, и symbolic_link на имя символической ссылки.

symbolic_link Параметр является необязательным. Если вы не укажете символическую ссылку, ln команда создаст новую ссылку в вашем текущем каталоге:

В следующем примере мы создаем символическую ссылку с именем my_link.txt файла my_file.txt :

Чтобы убедиться, что символическая ссылка была успешно создана, используйте ls команду:

Вывод будет выглядеть примерно так:

Создание символических ссылок на каталог

Команда для создания символической ссылки на каталог такая же, как и при создании символической ссылки на файл. Укажите имя каталога в качестве первого параметра и символическую ссылку в качестве второго параметра.

Например, если вы хотите создать символическую ссылку из /mnt/my_drive/movies каталога в

/my_movies каталог, вы должны выполнить:

Перезапись символических ссылок

Удаление символических ссылок

Синтаксис unlink очень прост:

Удаление символической ссылки с помощью rm команды аналогично удалению файла:

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

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

Вывод

Для получения дополнительной информации о ln команде посетите страницу руководства ln или введите man ln свой терминал.

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Жесткая ссылка:

Как создавать ссылки в Linux. Команда ln

Для создания ссылок в Linux используется команда ln (от слова link).

Синтаксис команды ln :

Создание символических ссылок

Например, создадим в текущем каталоге символическую ссылку с именем mylink на файл /home/pingvinus/myfile :

Обратите внимание, что ссылка и целевой файл имеют разные inode (792300 и 787622. См. число в начале строки).

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

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

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

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

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

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

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

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

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

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

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

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

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

Резюме

Источник

Жесткие и Символьные ссылки в Linux

Обновл. 14 Май 2021 |

Ссылка в Unix-подобных системах — это своего рода указатель, напоминающий указатели в языках программирования, с той лишь разницей, что он указывает на файл или каталог. Ссылки позволяют нескольким именам файлов ссылаться на один и тот же файл, расположенный где-то в другом месте. В Linux-системах существуют два разных типа ссылок: символьная (или «мягкая», «символическая») ссылка и жесткая ссылка. На этом уроке мы разберем, чем символьная ссылка отличается от жесткой, и как с ними работать.

Жесткая ссылка (Hard link)

Предположим, вы захотели скопировать файл. В процессе копирования будет создан новый файл. Его непосредственные данные запишутся в свободное место на диске, а самому файлу система назначит уникальный идентификатор — индексный номер (сокр. «inode» от англ. «index node«).

Создавая жесткую ссылку (англ. «hard link») на файл, мы привязываемся к его индексному номеру, получая тот же самый файл (с новым именем), на который указывает ссылка, но без физического создании копии.

как создать жесткую ссылку на файл в linux

Для создания жесткой ссылки используется команда ln (от англ. «lin), имеющая довольно простой синтаксис:

$ ln целевой_файл имя_ссылки

Для примера создадим ссылку с именем hardlink1, указывающую на уже существующий файл file1:

$ ln file1 hardlink1

как создать жесткую ссылку на файл в linux

$ ln file1 hardlink2
$ ls –lih

как создать жесткую ссылку на файл в linux

Обратите внимание, теперь счетчик ссылок показывает цифру 3 вместо 2.

Символьная ссылка (Symbolic link)

Символьная ссылка (сокр. «symlink» от англ «symbolic link«), в отличие от жесткой ссылки, указывает не на индексный номер файла, а на его имя (путь). В каком-то роде символьная ссылка является аналогом ярлыка в Windows-системах.

как создать жесткую ссылку на файл в linux

При этом будет создан новый (!) объект файловой системы с именем symlink1, указывающий на существующий файл file1:

как создать жесткую ссылку на файл в linux

Сравним индексные номера file1, hardlink1, hardlink2 и symlink1:

как создать жесткую ссылку на файл в linux

Видно, что индексный номер symlink1 отличается от других номеров, так как для файловой системы это уже два независимых объекта. Также заметно и различие в наборе прав.

Жесткие ссылки vs. Символьные ссылки

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

Жесткие ссылки:

не могут пересекать границы файловой системы (т.е. жесткая ссылка работает только в пределах своей файловой системы);

нельзя использовать с директориями;

имеют inode и разрешения исходного файла;

разрешения будут обновляться при изменении разрешения исходного файла;

связаны с содержимым исходного файла. Если вы создадите жесткую ссылку на файл и измените содержимое файла (или ссылки), то изменения будут присутствовать в обоих объектах;

с помощью жесткой ссылки вы можете просматривать содержимое файла, даже если исходный файл перемещен или удален.

Символьные ссылки:

могут пересекать границы файловой системы;

можно использовать с директориями;

имеют свои собственные (отдельные) inode и права доступа;

разрешения не будут обновляться;

связаны только с именем (путем) исходного файла, а не с его содержимым; удаление символьной ссылки не приводит к удалению файла;

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

Удаление ссылок

как создать жесткую ссылку на файл в linux

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

При удалении файла, на который указывает символьная ссылка, сама ссылка просто станет нерабочей. Например, удалим файл file1, на который у нас есть символьная ссылка symlink1:

как создать жесткую ссылку на файл в linux

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

$ file file1
file1: cannot open `file1′ (No such file or directory)
diego@debian:

$ file symlink1
symlink1: broken symbolic link to file1
diego@debian:

Заключение

Ссылки являются неотъемлемой частью Linux-систем и часто помогают в навигации и изучении файловой системы. Если у вас остались какие-то вопросы, то не стесняйтесь задавать их в комментариях.

Поделиться в социальных сетях:

Изучаем процессы в Linux. Управление процессами

Источник

Команда ln в Linux. Создание мягких и жестких ссылок

Главное меню » Linux » Команда ln в Linux. Создание мягких и жестких ссылок

как создать жесткую ссылку на файл в linux

Есть два типа ссылок:

Жесткие и программные ссылки создаются с помощью команды ln.

В этой статье мы покажем вам, как использовать команду ln для создания различных типов ссылок в Linux.

Примеры команды ln

Синтаксис команды ln прост:

Позвольте нам показать вам несколько примеров использования команды ln для создания ссылок в Linux.

1. Создать жесткую ссылку на файл

Чтобы создать жесткую ссылку на файл, вы можете использовать команду ln без таких параметров:

2. Создать мягкую ссылку на файл

Большинство терминалов Linux будут показывать программную ссылку в другом цвете вместе с пунктом назначения, на который она указывает.

Даже если ваш терминал не отображает мягкие ссылки другого цвета, вы можете идентифицировать ссылки таким образом.

3. Создать мягкую ссылку на каталог

Создание программной ссылки на каталог аналогично созданию символической ссылки на файл. Вам просто нужно заменить целевое имя файла / путь на имя каталога / путь.

Вы заметите, что цвет мягкой ссылки и жесткой ссылки обычно различается в терминале Linux. Жесткая ссылка на каталог невозможна (обычно).

4. Обновите существующую мягкую ссылку (или жесткую ссылку)

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

Для этого команда ln имеет две опции:

Предположим, вы хотите принудительно обновить символическую ссылку. Вот что вы можете сделать:

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

Бонусный совет: получение оригинального файла по цепочке ссылок

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

Зачем нам нужны ссылки?

Теперь, когда вы знаете, как создавать ссылки, давайте вкратце, зачем нам ссылки? Какой практической цели они служат?

Там может быть несколько вариантов использования. Допустим, вы загрузили программное обеспечение, которое поставляется с его кодом и исполняемым файлом. Вы держите все это в /optкаталоге. Но чтобы запустить программу из любого места, вам нужно поместить ее исполняемый файл в каталог /usr/bin.

Если вы переместите исполняемый файл в этот каталог, он может не работать, поскольку ему необходим доступ к некоторому коду, и он не найдет путь к этим файлам из каталога /usr/bin. Здесь вы можете создать ссылку на этот исполняемый файл в каталоге /usr/bin.

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

Ссылки являются неотъемлемой частью Linux. Вы найдете их во многих местах в ваших системах. Просто посмотрите в каталог /lib, и вы увидите множество мягких ссылок.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

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

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