Каковы типичные виды использования жестких ссылок?
Каждый, кто привык к Windows, может представить, что такое символические ссылки и как они используются. С другой стороны, концепция жесткой ссылки чужды Windows (я прав?).
Я хотел бы знать, каковы типичные способы использования жестких ссылок в Linux. Я уже видел разные посты, описывающие разницу в том, как они работают. Я спрашиваю, в каких типичных ситуациях пользователю лучше использовать жесткие ссылки вместо символических ссылок?
2 ответа
Я использую жесткую ссылку, где мне нужен один файл в двух или более местах, я предсказываю, что однажды я захочу удалить одно из мест, и я могу забыть, что у меня есть ссылка на файл. Это мешает мне получить символическую ссылку на файл, который больше не существует.
Разъяснение:
На самом деле имя файла - это жесткая ссылка на файл. Таким образом, у каждого файла есть хотя бы одна жесткая ссылка, которую мы обычно называем "именем" файла. Когда вы удаляете файл, фактически вы удаляете его жесткую ссылку (отсюда и название "удалить", т.е. rm
, а не "удалить"). Когда у файла удалена последняя жесткая ссылка, система также удаляет файл.
Жесткие ссылки позволяют...
один исполняемый файл, имеющий несколько имен.
Пример:
ls -l /bin | grep -v ' 1 ' | sort
перечислю те в/bin
для тебя. Результат...-rwxr-xr-x 2 root root 63 2010-01-19 21:49 gunzip -rwxr-xr-x 2 root root 63 2010-01-19 21:49 uncompress -rwxr-xr-x 3 root root 26300 2011-12-12 22:40 bunzip2 -rwxr-xr-x 3 root root 26300 2011-12-12 22:40 bzcat -rwxr-xr-x 3 root root 26300 2011-12-12 22:40 bzip2
Вместо 3-х файлов bunzip2 bzcat и bzip2 используют один и тот же файл, и внутри файла делается различие в том, что делать. Сохраняет код и меньше кода означает меньше возможных ошибок и более простое обслуживание.
один файл для доступа к нескольким путям.
Возьмем, например, менеджер пакетов, который создает каталог /usr/share/doc/$packagename для каждого установленного пакета, а внутри этого каталога - файл LICENSE с информацией о лицензии пакета. Многие пакеты в типичной системе Linux имеют лицензию GPL, поэтому вместо 200 копий GPL в файловой системе может быть только одна копия и 199 ссылок. ptman @ Serverfault
Причина, по которой здесь работают жесткие ссылки (а мягкие - нет): удаление только одной из жестких ссылок не приводит к удалению самого файла.