Podem dois arquivos em dois sistemas de arquivos separados compartilhar o mesmo número de inode? [duplicado]

17

Se eu executar um comando como este:

find / -inum 12582925

Há uma chance de que isso liste dois arquivos em sistemas de arquivos montados separados (de partições separadas) aos quais foi atribuído o mesmo número? O número do inode é único em um único sistema de arquivos ou em todos os sistemas de arquivos montados?

    
por Flimm 23.08.2018 / 14:41

2 respostas

39

Um número de inode é exclusivo em um único sistema de arquivos. Um exemplo que você vai encontrar rapidamente é o inode raiz nos sistemas de arquivos ext2 / 3/4, que é 2:

$ ls -id / /home
2 /    2 /home

Se você executar (assumindo o GNU find )

find / -printf "%i %p\n" | sort -n | less

em um sistema com vários sistemas de arquivos, você verá muitos, muitos números de inode duplicados (embora você precise levar a saída com uma pitada de sal, uma vez que também incluirá hard links).

Quando você procura um arquivo por número de inode, pode usar a opção find de -xdev para limitar sua pesquisa ao sistema de arquivos que contém o caminho inicial, se tiver um único caminho inicial:

find / -xdev -inum 12582925

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 nesse caso específico.)

É a combinação do número do inode e do número do dispositivo ( st_dev e st_ino no stat structure, %D %i no find do -printf ) que identifica um arquivo exclusivamente (em um dado sistema). Se duas entradas de diretório tiverem o mesmo inode e dev number, elas se referem ao mesmo arquivo (embora possivelmente através de duas montagens diferentes de um mesmo sistema de arquivos para montagens de ligação).

Algumas implementações find também têm um predicado -samefile que localizará arquivos com o mesmo dispositivo e número de inode. A maioria das implementações de [ / test também tem um operador -ef para verificar se dois caminhos de arquivos se referem ao mesmo arquivo (embora após a resolução de links simbólicos).

    
por 23.08.2018 / 14:47
4

Sim, o mesmo número de inode pode aparecer em um sistema de arquivos diferente. Se você quiser especificar o exato, você não precisará apenas do número de 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 -). / p>

O casal (st_dev, st_ino) irá identificar um arquivo específico (pelo menos se você não desmontar o sistema de arquivos onde este inode reside).

Como mencionado em inode (7) :

Device where inode resides

Each inode (as well as the associated file) resides in a filesystem that is hosted on a device. That device is identified by the combination of its major ID (which identifies the general class of device) and minor ID (which identifies a specific instance in the general class).

Inode number

Each file in a filesystem has a unique inode number. Inode numbers are guaranteed to be unique only within a filesystem (i.e., the same inode numbers may be used by different filesystems, which is the reason that hard links may not cross filesystem boundaries).

    
por 24.08.2018 / 00:07