¿Cómo enumerar todas las rutas de enlace físico de un determinado inodo sin atravesar un sistema de archivos completo en Linux?

¿Cómo enumerar todas las rutas de enlace físico de un determinado inodo sin atravesar un sistema de archivos completo en Linux?

Me gustaría saber todas las rutas que tienen el mismo número de inodo, encontréls - ¿Enumerar todos los archivos con el mismo número de inodo? - Intercambio de pila de Unix y Linuxsin embargo, la respuesta implica atravesar todo el sistema de archivos que contiene inodos usando la findutilidad, lo cual no es práctico para sistemas de archivos con una gran cantidad de archivos.

Dado que la información del enlace físico debe almacenarse en una determinada estructura de datos de un sistema de archivos, ¿es posible recuperar dicha información directamente con una utilidad específica del sistema de archivos?

Respuesta1

Esto sólo sería posible si el propio inodo contuviera la ubicación de cada objeto vinculado. Esto no es práctico porque requiere varias actualizaciones más (y pasos de validación) del propio inodo en el caso de que uno de los archivos se mueva en la estructura de directorios. Tener rutas de archivo reales en el inodo significaría mucha más sobrecarga en el inodo, ya que tendría que cambiar dinámicamente su tamaño para compensar los cambios de ruta o cambios de nombre y el tamaño del inodo podría variar enormemente.

En cambio, el inodo contiene sólo el número de enlaces, no el lugar de destino o de dónde. Esta cantidad de enlaces podría ser un solo campo de 32 bits y no hace que el tamaño del inodo cambie; se puede actualizar "en el lugar" en lugar de que todo el elemento deba cargarse, modificarse y luego guardarse nuevamente en un lugar diferente.

Los únicos lugares donde aparece el número de inodo es en el propio objeto del directorio. Tenga en cuenta que los directorios son esencialmente archivos especiales que vinculan otros archivos. De esa manera, para mover un archivo, la cantidad de enlaces sigue siendo la misma y son solo un par de actualizaciones del directorio. Para eliminar o agregar, es un cambio de directorio y una actualización menor del inodo.

Como resultado, la única forma es, como habrá descubierto, recorrer todo el sistema de archivos en busca de apariciones de ese inodo.

información relacionada