Создание ссылок (symlink) в Unix/Linux

Создание ссылок (symlink) в Unix/Linux

Хотелось бы рассказать как можно создавать ссылки (симлинки) в ОС Unix/Linux. В своей теме «Создание ссылок (symlink) в Unix/Linux» я на готовом примере покажу как это делается. Существуют несколько видов ссылок, и я расскажу в чем разница между ними.

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

Жёсткой ссылкой — это структурная составляющая файла которая описывает его элемент каталога.

Создание ссылок (symlink) в Unix/Linux

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

Мягкая ссылка (Soft link):

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

Синтаксис:

$ ln -s {/путь/к/файлу} {файл-линк} - это для файлов.
$ ln -s {/путь/к/директории} {имя-линки} - это для директорий.

Для того чтобы создать симлинк в линукс используется следующая команда:

# ln -s /home/captain/linux-notes.org.txt /home/captain/linux-notes.org-softlink.txt

И так, я создал симлинк linux-notes.org.conf на на тот же файл но который будет расположен в другой директории. После создания симлинка, необходимо сменить права на него:

# chown -h your_user:your_group /home/captain/linux-notes.org-softlink.txt

Для проверки номера иноды:

$ ls -li /home/captain/linux-notes.org.txt /home/captain/linux-notes.org-softlink.txt

Получаем:

392072 lrwxrwxrwx. 1 root root 33 Sep 14 10:37 /home/captain/linux-notes.org-softlink.txt -> /home/captain/linux-notes.org.txt
391822 -rw-r--r--. 2 root root 0 Sep 14 10:36 /home/captain/linux-notes.org.txt

Я создал симлинк на файл, так же, можно создавать симлинка на целую папку, для этого используйте:

# ln -s /opt/directory /home/symlink-to-opt-dir

И так, я создал симлинк symlink-to-opt-dir на папку /opt/directory. После создания симлинка, необходимо сменить права на него:

# chown -h your_user:your_group /home/symlink-to-opt-dir

Вот и все, очень просто, и полезно.

Для проверки номера иноды:

$ ls -ld /opt/directory /home/symlink-to-opt-dir

Чтобы удалить, используйте:

$ rm /home/captain/linux-notes.org.txt
$ rm/home/captain/linux-notes.org-softlink.txt

И аналогично для каталогов.

Если вы удалите мягкую ссылку (/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):

  1. Жесткие ссылки использует тот же номер иноды что и основные файлы.
  2. Нельзя создать жесткие ссылки на каталоги.
  3. Жесткие ссылки не могут быть созданы на пересечении файловых систем.
  4. Жесткие ссылки всегда относится к источнику, даже если они перемещаются или удаляется.

Чтобы создать «жесткую ссылку», используйте:

$ ln /home/captain/linux-notes.org.txt /home/captain/linux-notes.org-hardlink.txt

Проверяем номер иноды:

$ ls -li /home/captain/linux-notes.org.txt /home/captain/linux-notes.org-hardlink.txt

Получаем:

391822 -rw-r--r--. 2 root root 0 Sep 14 10:36 /home/captain/linux-notes.org-hardlink.txt
391822 -rw-r--r--. 2 root root 0 Sep 14 10:36 /home/captain/linux-notes.org.txt

Оба файла имеют одинаковые иноды (одинаковое количество индексных дескрипторов). Если нужно удалить «жесткую ссылку», то используйте команду:

# rm -rf /home/captain/linux-notes.org-hardlink.txt

Если вы удалите жесткую ссылку, ваши данные будут там. Если вы удалите /home/captain/linux-notes.org.txt то файл будет по-прежнему доступен через жесткую ссылку

Жесткие ссылки (Hardlink) vs Мягкие ссылки (Softlink) в UNIX/Linux

  • Как я говорил ранее, жесткие ссылки не могут быть созданы для директорий.
  • Жесткие ссылки не могут использоваться на пересечении границ файловых систем ( Нельзя создать сылку /tmp и примонтированную на /tmp ко 2-му  HDD который смонтирован на/harddisk2).
  • Символические ссылки (мягкие ссылки) ссылаются на символичный путь с указанием абстрактного расположение другого файла.
  • Жесткие ссылки, ссылаются к определенному местоположению физических данных.

На этом, моя тема «Создание ссылок (symlink) в Unix/Linux» завершена. Не сильно сложная тема, но очень полезная.

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.