Se eu executar um comando como este:
find / -inum 12582925
Existe uma chance de que isso liste dois arquivos em sistemas de arquivos montados separados (de partições separadas) que receberam o mesmo número? O número do inode é exclusivo em um único sistema de arquivos ou em todos os sistemas de arquivos montados?
Um número de inode é exclusivo apenas em um único sistema de arquivos. Um exemplo que você encontrará rapidamente é o inode root em sistemas de arquivos ext2/3/4, que é 2:
Se você executar (assumindo GNU
find
)em um sistema com vários sistemas de arquivos, você verá muitos, muitos números de inode duplicados (embora você precise obter a saída com uma pitada de sal, pois ela também incluirá links físicos).
Ao procurar um arquivo pelo número do inode, você pode usar a opção
find
's-xdev
para limitar sua pesquisa ao sistema de arquivos que contém o caminho inicial, se você tiver um único caminho inicial:só encontrará arquivos com o número de inode 12582925 no sistema de arquivos raiz. (
-xdev
também funciona com vários caminhos de início, mas sua utilidade é reduzida neste caso específico.)É a combinação do número do inode e do número do dispositivo (
st_dev
est_ino
nastat
estrutura,%D %i
em GNUfind
's-printf
) que identifica um arquivo exclusivamente (em um determinado sistema). Se duas entradas de diretório tiverem o mesmo número de inode e dev, elas se referem ao mesmo arquivo (embora possivelmente por meio de duas montagens diferentes de um mesmo sistema de arquivos para montagens de ligação).Algumas
find
implementações também possuem um-samefile
predicado que encontrará arquivos com o mesmo dispositivo e número de inode. A maioria das implementações[
/test
também tem um-ef
operador para verificar se dois caminhos de arquivos se referem ao mesmo arquivo (depois da resolução do link simbólico).Sim, o mesmo número de inode pode aparecer em um sistema de arquivos diferente. Se você deseja especificar o exato, você precisa não apenas do número do inode (st_ino), mas também do dispositivo onde o inode reside (st_dev, formado por dev_major —a classe geral do dispositivo— e dev_minor —a instância específica—).
O par (st_dev, st_ino) identificará um arquivo específico (pelo menos se você não desmontar o sistema de arquivos onde este inode reside).
Conforme declarado em inode(7) :