Skip to content
Latchkey

O Que É um Hard Link? Um Segundo Nome para Um Arquivo

Um hard link é um nome adicional (entrada de diretório) que aponta para exatamente os mesmos dados subjacentes de um arquivo que outro nome, não para um caminho.

Diferente de um link simbólico, que aponta para um caminho, um hard link é um segundo nome para exatamente os mesmos dados de arquivo em disco. Ambos os nomes são iguais: excluir um deixa os dados intactos enquanto outro nome permanecer. Hard links sustentam recursos como cópias rápidas e econômicas de espaço que alguns gerenciadores de pacotes e caches usam.

O que é um hard link

Em disco, os dados de um arquivo são rastreados por um inode, e um nome de arquivo é apenas um ponteiro para esse inode. Um hard link é um segundo nome de arquivo apontando para o mesmo inode, então ambos os nomes se referem a dados idênticos.

Criando um

Você cria um hard link com ln target linkname (sem -s). Depois disso, ambos os nomes são de primeira classe; não há "original" em nenhum sentido significativo, já que compartilham o mesmo inode.

Hard link versus symlink

  • Um hard link compartilha o inode; um symlink armazena um caminho.
  • Excluir um nome com hard link mantém os dados através do outro.
  • Hard links geralmente não podem cruzar sistemas de arquivos nem ter diretórios como alvo.

Por que hard links são úteis

Como os dados são compartilhados, um hard link custa quase nenhum espaço extra. Ferramentas usam isso para "copiar" arquivos instantaneamente, que é como alguns gerenciadores de pacotes criam árvores de dependências de forma barata.

Hard links no CI

Gerenciadores de pacotes como o pnpm usam hard links para deduplicar dependências, economizando disco e tempo. Ao fazer cache de um store desses, o cache deve preservar a estrutura de links, ou installs restaurados podem inchar de tamanho ou quebrar.

Installs deduplicados em runners gerenciados

Nos runners Latchkey, stores de dependências baseados em hard links restauram mais rápido quando o cache mantém os links intactos. Verificar que o seu cache preserva hard links mantém os installs rápidos e corretos.

Principais conclusões

  • Um hard link é um segundo nome de arquivo apontando para os mesmos dados de arquivo (inode).
  • Diferente de um symlink, ele compartilha os dados diretamente e sobrevive à exclusão do outro nome.
  • No CI, ferramentas como o pnpm usam hard links para deduplicar dependências de forma eficiente.

Guias relacionados