como deletar um arquivo por um inode no kernel do Linux

como deletar um arquivo por um inode no kernel do Linux

Peguei o inode de um arquivo no kernel do Linux, quero deletar o arquivo pelo inode.

Preciso desvincular todos os dentry do inode? ou preciso desvincular algum dente?

Quais bloqueios devo usar para proteger o quê?

Responder1

Chamadas de remoção de arquivo portátil, unlink(), remove() e wrappers de nível superior, praticamente todos levam nomes de caminho. Os inodes são principalmente um detalhe de implementação.

Para fazer isso em shell, use ferramentas como GNUencontrar.

find /tmp  -type f -inum $INODE

Substitua /tmppelo caminho a ser pesquisado, $INODEpelo número. Adicione -delete se desejar que os resultados sejam desvinculados. Vários nomes do mesmo inode podem ser encontrados.

Como este método percorre todos os arquivos, não é eficiente.

Responder2

No Linux, você não pode excluir um arquivo.

O que vocêpodeO que fazer é remover todas as referências a ele e então o sistema de arquivos removerá automaticamente o espaço e marcará o inode como não utilizado.

Mas observe que os arquivos podem ser referenciados por processos em execução. O arquivo ainda existirá mesmo que nada no sistema de arquivos aponte para ele. Até que o processo termine ou feche o arquivo, ele ainda existirá.

informação relacionada