Como enumerar todos os caminhos de link físico de um determinado inode sem percorrer um sistema de arquivos inteiro no Linux?

Como enumerar todos os caminhos de link físico de um determinado inode sem percorrer um sistema de arquivos inteiro no Linux?

Gostaria de saber todos os caminhos que possuem o mesmo número de inode, encontreils – Lista todos os arquivos com o mesmo número de inode? - Troca de pilha Unix e Linuxno entanto, a resposta envolve percorrer todo o sistema de arquivos contendo inodes usando o findutilitário, o que não é prático para sistemas de arquivos com grande número de arquivos.

Como as informações do link físico devem ser armazenadas em uma determinada estrutura de dados de um sistema de arquivos, é possível recuperar essas informações diretamente com um utilitário específico do sistema de arquivos?

Responder1

Isso só seria possível se o próprio inode contivesse a localização de cada objeto vinculado. Isso é impraticável porque requer mais algumas atualizações (e etapas de validação) no próprio inode, caso um dos arquivos seja movido na estrutura de diretórios. Ter caminhos de arquivo reais no inode significaria muito mais sobrecarga no inode, pois teria que alterar dinamicamente seu tamanho para compensar alterações ou renomeações de caminho e o tamanho do inode poderia variar muito.

Em vez disso, o inode contém apenas o número de links, não de onde ou de onde. Este número de links pode ser um único campo de 32 bits e não faz com que o tamanho do inode mude, ele pode ser atualizado "no local" em vez de todo o item precisar ser carregado, modificado e salvo novamente em um local diferente.

Os únicos locais onde o número do inode está listado são no próprio objeto de diretório. Tenha em mente que os diretórios são essencialmente arquivos especiais que vinculam outros arquivos. Dessa forma, para uma movimentação de arquivo, o número de links permanece o mesmo e são apenas algumas atualizações de diretório. Para excluir ou adicionar, é uma alteração de diretório e uma pequena atualização no inode.

Como resultado, a única maneira é, como você descobriu, percorrer todo o sistema de arquivos em busca de ocorrências desse inode.

informação relacionada