Поиск по сайту:

Мягкая (символическая) ссылка против жесткой ссылки


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

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

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

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

Во всех системах Linux как жесткие, так и символические ссылки создаются с помощью команды «ln». Для начала сначала создайте файл с именем LinuxHintFile и каталог с именем LinuxHintDirectory, как показано на рисунке ниже:

touch LinuxHintFile
rmkdir LinuxHintDirectory
ls
root@LinuxHint:/home/linux-console#

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

ln LinuxHintFile Link2LHFile

После проверки с помощью ls мы видим только что созданную жесткую ссылку, если вы наберете ls -i, вы увидите иноды файлов, вы можете подтвердить ссылку, которую мы только что создали имеет тот же номер индекса, что и исходный файл, введите:

ls -i

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

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

find -type f -links +1

Вы также можете найти файлы по инодам, для этого прогона:

find . -inum <InodeNumber>

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

 

Программные ссылки

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

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

Символические ссылки также создаются программой ln, но чтобы ссылка была символической/мягкой, нужно указать параметр -s , чтобы создать символическую ссылку на каталог LinuxHintDirectory с именем LHDLink, выполните:

ln -s LinuxHintDirectory LHDLink

Затем запустите «ls -i», чтобы проверить, правильно ли он создан:

Как мы видим, в этом случае символическая ссылка была создана, но она имеет другой номер инода, чем исходный файл.

Мы можем перечислить символические ссылки внутри каталога с помощью команды «ls -l».

На изображении выше мы видим в разрешениях первого файла префикс «l» для символических ссылок, конец строки также показывает, к какому файлу символическая ссылка точки.

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

Статьи по данной тематике: