Команда ln в Linux: Создание ссылок в Linux

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

Что такое команда Linux ln?

Команда ln используется для создания ссылок на файлы или каталоги. («ln» — сокращение от «link».) Команда подается в командную строку Linux (также называемую оболочкой), которая открывается и работает с помощью окна терминала. Это одна из самых важных и наиболее часто используемых команд терминала, которая может использоваться для создания мягких или жестких ссылок.

Что такое мягкие и жесткие ссылки?

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

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

Давайте рассмотрим конкретный пример. Допустим, есть видеофайл, доступный только в каталоге «Мои видеозаписи». После создания жесткой ссылки его можно получить и из другого каталога, например, «My Videos Backup». Если исходный файл будет удален из «Моих видео», он все равно будет доступен по жесткой ссылке в «Моей резервной копии видео». Это преимущество жестких ссылок — дополнительная запись в управлении памятью не использует никакой дополнительной памяти. Она просто служит альтернативным вариантом доступа (по пути к файлу) и не является второй физической копией файла.

Жесткие ссылки тесно связаны со специальной внутренней бухгалтерией в Linux. Каждая жесткая ссылка ссылается на inode, и ей присваивается уникальный номер inode, тот же самый, который был присвоен исходному файлу. Файл не удаляется из системы inode (и, следовательно, из всей системы) до тех пор, пока все записи (т.е. все ссылки на файл) не станут недействительными в результате операций удаления, а внутренний счетчик ссылок не будет установлен в ноль. С другой стороны, если удаляется только одна адресная запись из многих или если исходный файл перемещается в другой каталог, ничего не меняется. Остальные возможности доступа к исходному файлу, которые хранятся в inode, остаются в силе.

Факт

Inodes — это определенные структуры данных, которые уникально описывают файл, содержат метаинформацию о нем (принадлежность к группе, владелец, права доступа) и документируют, где он сохранен (в виде адреса памяти).

Как следует использовать жесткие и мягкие ссылки?

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

Жесткие ссылки обычно связывают файлы, а не каталоги или папки. А поскольку номерами inode можно управлять только в разделах, жесткие ссылки могут соединять файлы только в пределах одного раздела. Однако современные системы Linux часто содержат различные файловые системы, расположенные на разных жестких дисках и разделах. Поэтому, если вы работаете с жесткими ссылками, вы должны знать свою систему и знать основы разметки и форматирования.

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

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

Как реализована команда ln в Linux?

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

Создание жесткой ссылки в пределах одного каталога

По умолчанию команда ln в Linux настроена на создание жестких ссылок. Формат команды следующий:

ln TargetFilePath Reference

Например, в приведенном ниже коде создается жесткая ссылка на видеофайл (video.mp4) в профиле пользователя с именем «Peter» (/home/peter/). Оригинальный файл и вновь созданная жесткая ссылка находятся в одной и той же директории для видео. После этого жесткая ссылка может быть перемещена без каких-либо проблем и без потери ее действительности.

ln /home/peter/videos/video.mp4 hard_link_to_video_file

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

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

ln /home/peter/videos/video.mp4 /home/peter/Desktop/hard_link_to_video_file

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

Если вы хотите создать мягкую ссылку с помощью команды Linux ln, вы можете использовать опцию «-s» (s = symbolic). Синтаксис для мягкой ссылки следующий:

ln -s TargetFilePath Reference

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

ln -s /home/peter/video.mp4 soft_link_to_video_file

Создание программной ссылки в другом каталоге

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

ln -s /home/peter/videos/video.mp4 /home/peter/Desktop/soft_link_to_video_file

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

ln -s -v /home/peter/videos/movie.mp4 /home/peter/Desktop/soft_link_to_video_file

Более сложная операция связывания показана ниже. Этот пример Linux ln использует опцию «-t» (t = целевой каталог), которая указывает каталог, в котором должны быть созданы ссылки.

ls Invoice* | xargs ln -s -t /home/peter/Desktop/

Этот код создает ссылки на все файлы, начинающиеся с «Invoice» и находящиеся в текущем каталоге, и помещает их в каталог рабочего стола. (Звездочка служит для включения всех файлов, имя которых начинается с «Invoice», например, «Invoice_January», «Invoice_February»).

Удаление мягких ссылок

Мягкие ссылки можно удалить с помощью команды Linux «rm» (rm = remove). Следующий код удаляет мягкую ссылку на видеофайл в текущем каталоге.

rm soft_link_to_video_file

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

rm softlink_video1 softlink_video2 softlink_video3 softlink_video4

Опция «r» (r = рекурсивный) может быть использована для удаления всех файлов с мягкими ссылками в папке с мягкими ссылками. Если папка содержит вложенные папки, они также будут удалены.

rm -r ~/Desktop/Softlink-Files/*

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

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

ln -s /home/peter/videos/ /home/peter/Desktop/soft_link_for_video_folder

При работе с командой Linux ln не всегда нужно использовать полные имена путей (абсолютные пути). Оболочка Linux и команда ln принимают относительные пути и ярлыки. Например, тильда («~») может обозначать абсолютный путь к домашнему каталогу текущего пользователя (в нашем примере /home/peter/). Вот как выглядит сокращенный код для мягкой ссылки, указывающей на каталог для видео на рабочем столе:

ln -s ~/videos ~/Desktop/soft_link_for_video_folder
Примечание

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

Создание нескольких мягких ссылок одновременно

Вы также можете создать ссылку одновременно на каталог и файл. Синтаксис для этого следующий:

ln <Option> <Linkobject1> <Linkobject2> <Target directory with soft links for link objects>

Чтобы посмотреть, как это работает на практике, давайте снова сделаем «Linkobject1» файлом фильма в папке видео Питера. «Linkobject2» — это папка с именем «Test», которая находится в подпапке видеокаталога Питера. Мягкие ссылки на файл и папку будут сгенерированы в целевой директории «Soft_link_folder». Код выглядит следующим образом:

ln -s ~/videos/video.mp4 ~/videos/test/ ~/Desktop/Soft_link_folder

Целевой каталог «Soft_link_folder» должен уже существовать на рабочем столе, иначе операция не сработает.

Создание мягких ссылок с помощью резервного копирования

Если вы хотите использовать команду ln для создания резервной копии файлов, которые уже существуют в целевом каталоге, вы можете использовать опцию «-b» (b = backup).

ln -s -b /home/peter/videos/movie.mp4 /home/peter/Desktop/soft_link_to_video_file

Тогда резервный файл будет отображаться с тильдой в конце имени (например, soft_link_to_video_file~). Если вам не нужна резервная копия и вы хотите перезаписать более старый файл мягкой ссылки, используйте опцию «-f» (f = force):

ln -s -f /home/peter/videos/movie.mp4 /home/peter/Desktop/soft_link_to_video_file

Вставьте опцию «-i» (i = interactive), если вы хотите видеть подсказку перед удалением целей. И если в какой-то момент вам понадобится помощь в работе с командой Linux ln, опция «—help» покажет вам все доступные параметры и опции для команды ln.

Оцените статью
cdelat.ru
Добавить комментарий