Создание ссылок (symlink) в Unix/Linux
Хотелось бы рассказать как можно создавать ссылки (симлинки) в ОС Unix/Linux. В своей теме «Создание ссылок (symlink) в Unix/Linux» я на готовом примере покажу как это делается. Существуют несколько видов ссылок, и я расскажу в чем разница между ними.
Симлинк или мягкая ссылка представляет собой особый тип файла, который содержит ссылку на другой файл или каталог в виде абсолютного или относительного пути.
Жёсткой ссылкой — это структурная составляющая файла которая описывает его элемент каталога.
Создание ссылок (symlink) в Unix/Linux
В этом подразделе, я расскажу какие бывают симлинки и в чем они отличаются.
Мягкая ссылка (Soft link):
- Мягкие ссылки используют различные номера инод чем основные файлы.
- Мягкие ссылки становится полезными, если исходный файл был удален.
- Мягкие ссылки могут быть созданы из каталогов.
- Мягкая ссылка может быть создана на пересечении файловых систем.
Синтаксис:
$ 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):
- Жесткие ссылки использует тот же номер иноды что и основные файлы.
- Нельзя создать жесткие ссылки на каталоги.
- Жесткие ссылки не могут быть созданы на пересечении файловых систем.
- Жесткие ссылки всегда относится к источнику, даже если они перемещаются или удаляется.
Чтобы создать «жесткую ссылку», используйте:
$ 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» завершена. Не сильно сложная тема, но очень полезная.
Спасибо за статью