Каковы типичные виды использования жестких ссылок?

Каждый, кто привык к 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

Причина, по которой здесь работают жесткие ссылки (а мягкие - нет): удаление только одной из жестких ссылок не приводит к удалению самого файла.

Другие вопросы по тегам