Esta é a primeira vez que vejo uma pesquisa usando inode. Quando você precisa procurar por inode?
Coren
@ Coren - é comumente usado se você tiver um arquivo com, digamos, um "-" na frente. Você pode fazer ls -li para encontrar o inode, e então: find. -inum <inode> -exec rm -i {} \; Essa é uma abordagem de cinto e braçadeira para garantir que você possa remover o arquivo. Obviamente, você também pode 'rm - -filename', ou rm ./-filename, ou rm "-filename".
31512 swisscheese
2
@Coren com selinux, as mensagens de log incluem o inode, mas não o caminho completo. Portanto, você deve procurar o inode para encontrar o arquivo que está sendo referido. (que é o meu caso de uso de qualquer maneira)
Patrick
1
@Coren Por exemplo, quando um arquivo tem vários links físicos, você percebeu que o conteúdo está obsoleto e deseja excluir o arquivo, mas encontrou apenas um dos nomes do arquivo e deseja excluir os outros.
Gilles 'SO- stop be evil' em
2
Apenas use find / -inum <inode>. É muito mais portátil do que debugfse também funciona com muito mais confiabilidade (ele pode encontrar caminhos que não pertencem a arquivos no disco rígido, como dispositivos, por exemplo).
7heo.tk
Respostas:
33
Para um sistema de arquivos ext4, você pode usar debugfscomo no exemplo a seguir:
Eu provavelmente deveria ter especificado o tipo de sistema de arquivos. Não me ocorreu que o método de fazer essas coisas seria diferente para diferentes sistemas de arquivos. Estou usando o XFS, portanto, enquanto tenho certeza de que sua resposta está correta, isso não me ajudará especificamente.
inode-resolve [-v] <ino> <path>
(needs root privileges)
resolve paths to all files with given inode number ino in a given
subvolume at path, ie. all hardlinks
Options
-v
verbose mode, print count of returned paths and ioctl()
return value
Você pode olhar para o comando fsdb, encontrado na maioria dos Unices, e disponível em algum lugar para Linux, tenho certeza. Este é um comando poderoso que permite acessar a estrutura de inode in-core dos arquivos, portanto, tenha cuidado. A sintaxe também é muito concisa.
Embora o fsdb não permita que você descubra o nome do arquivo do inode, ele permite que você acesse diretamente o inode quando o especificar, em essência "portando" você para o próprio arquivo (ou pelo menos para os indicadores de bloco de dados). mais rápido nesse aspecto do que a descoberta ;-).
Sua pergunta não especifica o que você deseja fazer com o arquivo. Você está decodificando identificadores de arquivo NFS?
Bem, não achei que o que eu ia fazer com a informação fosse relevante para a minha pergunta, então deixei de fora. No meu caso, era apenas uma questão de curiosidade; minha desfragmentação xfs_fsr cospe quais inodes desfragmentam, e uma era extremamente fragmentada (mais de 5000 extensões) e fiquei curioso para saber qual arquivo era. findfunciona, é tão lento.
30412 Alex
Estou tentando corrigir um problema em que meu rhel vm faz um fsck completo (20 minutos!) A cada inicialização e tudo o que preciso fazer é o número de inode relatado em / var / opt / messages como defeituoso. (Dito isto, encontrar -inum não chegou a encontrá-lo)
find / -inum <inode>
. É muito mais portátil do quedebugfs
e também funciona com muito mais confiabilidade (ele pode encontrar caminhos que não pertencem a arquivos no disco rígido, como dispositivos, por exemplo).Respostas:
Para um sistema de arquivos ext4, você pode usar
debugfs
como no exemplo a seguir:A resposta não é imediata, mas parece ser melhor que
find
.A saída obtida pode ser facilmente analisada para obter o nome do arquivo.
fonte
btrfs
man btrfs-inspect-internal
diz:Exemplo:
sudo btrfs inspect-internal inode-resolve 15380 /home
fonte
Você pode olhar para o comando fsdb, encontrado na maioria dos Unices, e disponível em algum lugar para Linux, tenho certeza. Este é um comando poderoso que permite acessar a estrutura de inode in-core dos arquivos, portanto, tenha cuidado. A sintaxe também é muito concisa.
fsdb para AIX
arquivo de re-link do fsdb no Solaris
Embora o fsdb não permita que você descubra o nome do arquivo do inode, ele permite que você acesse diretamente o inode quando o especificar, em essência "portando" você para o próprio arquivo (ou pelo menos para os indicadores de bloco de dados). mais rápido nesse aspecto do que a descoberta ;-).
Sua pergunta não especifica o que você deseja fazer com o arquivo. Você está decodificando identificadores de arquivo NFS?
sc.
fonte
find
funciona, é tão lento.