A principal vantagem dos hard links é que, em comparação com soft links, não há penalidade de tamanho ou velocidade. Links suaves são uma camada extra de indireção sobre o acesso normal a arquivos; o kernel precisa cancelar a referência ao link quando você abre o arquivo, e isso leva um pouco de tempo. O link também ocupa uma pequena quantidade de espaço no disco para conter o texto do link. Essas penalidades não existem com hard links porque elas são construídas na própria estrutura do sistema de arquivos.
A melhor maneira que conheço para ver isso é:
$ ls -id .
1069765 ./
$ mkdir tmp ; cd tmp
$ ls -id ..
1069765 ../
A opção -i para ls faz com que ele forneça o número do inode do arquivo . No sistema em que preparei o exemplo acima, aconteceu de eu estar em um diretório com o número de inode 1069765, mas o valor específico não importa. É apenas um valor único que identifica um determinado arquivo / diretório.
O que isso diz é que quando entramos em um subdiretório e olhamos para uma diferente entrada do sistema de arquivos chamada .. , ele tem o mesmo número de inode que obtivemos antes. Isso não está acontecendo porque o shell está interpretando .. para você, como acontece com o MS-DOS e o Windows. Em sistemas de arquivos Unix .. é uma entrada de diretório real; é um link difícil apontando para o diretório anterior.
Hard links são os tendões que unem os diretórios do sistema de arquivos. Era uma vez, o Unix não tinha links físicos. Eles foram adicionados para transformar o sistema de arquivos simples original do Unix em um sistema de arquivos hierárquico.
(Para mais informações, consulte Por que '/' tem um '. . 'entrada? .)
Também é comum em sistemas Unix que vários comandos diferentes sejam implementados pelo mesmo executável. Não parece ser mais o caso no Linux, mas nos sistemas que eu usei no passado, cp , mv e rm eram todos executáveis. Faz sentido se você pensar sobre isso: quando você move um arquivo entre volumes, é efetivamente uma cópia seguida por uma remoção, então mv já teve que implementar as funções dos outros dois comandos. O executável pode descobrir qual operação deve ser fornecida porque recebe o nome pelo qual foi chamado.
Outro exemplo, comum em Linuxes embarcados, é o BusyBox , um único executável que implementa dezenas de comandos.
Devo salientar que, na maioria dos sistemas de arquivos, os usuários não podem criar links físicos para diretórios. As entradas . e .. são gerenciadas automaticamente pelo código do sistema de arquivos, que normalmente faz parte do kernel. A restrição existe porque é possível causar problemas sérios no sistema de arquivos se você não tiver cuidado com a maneira como cria e usa links diretos de diretório. Esta é uma das muitas razões pelas quais existem soft links; eles não carregam o mesmo risco.