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

9

Каждый, кто привык к Windows, может представить, какие символические ссылки и как они используются. С другой стороны, концепция жесткой ссылки чуждо Windows (я прав?).

Я хотел бы знать, каковы типичные применения жестких ссылок в Linux. Я уже видел разные сообщения, описывающие разницу в том, как они работают. Я спрашиваю, каковы типичные ситуации, когда пользователю было бы лучше использовать жесткие ссылки вместо символических ссылок?

    
задан To Do 06.12.2012 в 09:42
источник

2 ответа

9

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

Разъяснение:

Имя файла - это, по сути, жесткая ссылка на файл. Таким образом, каждый файл имеет хотя бы одну жесткую ссылку, которая обычно считается «именем» файла. Когда вы удаляете файл, на самом деле вы удаляете его жесткую ссылку (отсюда и имя «удалить», т. Е. rm , а не «удалить»). Когда файл удаляет последнюю жесткую ссылку, система также удаляет файл.

    
ответ дан Paddy Landau 06.12.2012 в 15:19
источник
7

Жесткие ссылки позволяют ...

  • для одного исполняемого файла, имеющего более одного имени.

    Пример:

    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

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

ответ дан Rinzwind 06.12.2012 в 13:12
источник

Ознакомьтесь с другими вопросами по меткам