Calcula el conteo del enlace del número de inodo?

¿Cómo puedo calcular el recuento de enlaces de un número de inodo? Si sé que el número de inodo es, digamos, 592255, ¿qué puedo hacer para averiguar el número de enlaces?

Sé que los directorys tienen un recuento de enlaces de al less 2, pero no saben cómo resolverlo.

Encontrar el conteo del enlace usando el nombre

Puede usar el command stat para get un recuento de enlaces en un file / directory determinado:

 $ stat lib/ File: 'lib/' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: fd02h/64770d Inode: 11666186 Links: 3 Access: (0755/drwxr-xr-x) Uid: ( 1000/ saml) Gid: ( 1000/ saml) Context: unconfined_u:object_r:user_home_t:s0 Access: 2014-03-21 18:16:10.521963381 -0400 Modify: 2014-01-13 17:16:49.438408973 -0500 Change: 2014-01-14 17:57:46.636255446 -0500 Birth: - 

Echando un vistazo a la página man para stat :

 %h number of hard links %i inode number 

Entonces puede get este valor directamente usando las capacidades de salida de stat --printf o --format :

 $ stat --printf="%h\n" lib/ 3 $ stat --format="%h" lib/ 3 $ stat -c "%h" lib/ 3 

Encontrar el conteo del enlace usando el inode

Si, por otro lado, conoces el número de inodo solo, puedes retroceder de la siguiente manera:

 $ ls -id lib 11666186 lib $ find -inum 11666186 -exec stat -c "%h" {} + 3 

Referencias

  • Enlaces duros y nodos del sistema de files Unix (inodos)

Proporcione el número de inodo al command find y dígale que ejecute el command stat en el file:

 find . -inum #### -exec stat -c "%h" {} \; 

Por ejemplo

 ls -l passwd -rw-r--r-- 1 root root 1402 2008-03-30 17:49 passwd 

Este número (1) es realmente el número de enlace del file, cuando se refiere a un file, o el número de inputs de directory contenidas, cuando se refiere a un directory (incluidas las inputs. Y ..).

También por ejemplo

 ls -i /etc/passwd 8654127 /etc/passwd 

Este es el número de inodo para / etc / passwd. Ahora puedes encontrar cuántos enlaces están actualmente vinculados con este número de inodo 8654127 con:

 find /etc/ -inum 8654127 /etc/passwd 

En mi ejemplo, solo es / etc / passwd, por lo que puede hacer por su caso:

 find / -inum 592255 

Para get el recuento de enlaces desde el inodo sin search el sistema de files completo, en un sistema de files ext2 / ext3 / ext4 puede usar debugfs . El lado negativo es que necesita conocer el dispositivo y tener privilegios de administrador. Lo bueno es que puede ser mucho, mucho más rápido. Para un file con inodo 5638454 en dev/sda2 :

 sudo debugfs -R 'stat <5638454>' /dev/sda2 

En btrfs , dado el punto de assembly /mnt lugar del dispositivo:

 stat -c %h $(sudo btrfs inspect-internal inode-resolve 5638454 /mnt)