¿Dónde se almacena la información sobre enlaces duros / blandos?

¿Dónde almacena el sistema * nix la información sobre el número de enlaces duros a un inodo específico? No puedo encontrar ninguna información sobre eso. En todas partes, lo que es un enlace difícil, pero rara vez es una información un poco más avanzada que toca cosas relacionadas con inodos.

Un inodo almacena información sobre el número de enlaces, pero ¿de dónde lo obtiene? ¿Puedo localizar todos los enlaces (tanto duros como blandos) conociendo solo el número de inodo?

El recuento de enlaces duros se almacena en el inodo. Comienza en 1 cuando se crea el file, aumenta en 1 cada vez que la llamada del sistema de link tiene éxito y disminuye en 1 cada vez que la llamada al sistema de unlink se realiza correctamente.

La única forma de encontrar todos los enlaces duros al mismo file, es decir, encontrar todas las routes que conducen a un inodo dado, es pasar por todo el sistema de files y comparar los numbers de inodo. El inode no apunta a las inputs del directory.

Los directorys son un caso especial: sus enlaces duros obedecen reglas estrictas. (Algunas variantes de Unix permiten a root omitir estas reglas por count del administrador). Los enlaces duros a un directory son its . entry, its children's .. entry, y una input en su directory padre (el padre es el directory alcanzado por la input del directory .. ).

No hay forma de encontrar todos los enlaces simbólicos que apuntan a un file. Podrían estar en cualquier lugar, incluso en un sistema de files que no está montado.

Con GNU o FreeBSD find, puede usar find /some/dir -samefile /path/to/foo para encontrar todos los enlaces duros al file /path/to/foo que se encuentran bajo /some/dir . Con la opción -L , puede encontrar todos los enlaces suaves y duros a ese file. Puede encontrar un inodo por número con el pnetworkingicado -inum lugar de -samefile .