Encontrar todos los enlaces duros de un archivo sin atravesar el sistema de archivos

9

He visto en esta página que los inodes tienen un contador de enlaces para saber cuántos archivos (léase: "entrada de directorio") apuntan a este inodo. ¿Hay alguna manera de saber qué directorios contienen tales entradas sin atravesar todo el sistema de archivos? ¿Se almacena esta información en alguna parte?

struct inode {
    kdev_t                       i_dev;
    unsigned long                i_ino;
    umode_t                      i_mode;
    nlink_t                      i_nlink;
    uid_t                        i_uid;
    gid_t                        i_gid;
    …
};
qdii
fuente
El método más rápido, solo transversal, podría ser find -inum <n> -samefile path.
ott--
2
@ ott-- findse usa con uno -inum o -samefile no con ambos.
Hauke ​​Laging
@HaukeLaging tienes razón, solo uno de ellos.
ott--

Respuestas:

10

No. Las entradas de directorio que apuntan a inodes son enlaces unidireccionales. Los inodes no apuntan a las entradas del directorio.

Para encontrar una lista completa de entradas de directorio que apuntan a un inodo, debe recorrer el sistema de archivos hasta que haya encontrado suficientes entradas de directorio para dar cuenta del recuento de enlaces del inodo.

Celada
fuente