next up previous contents index
Next: Tipos de ficheros Up: Ficheros avanzados Previous: Ficheros avanzados   Índice General   Índice de Materias


La verdadera naturaleza de los ficheros: vínculos duros e inodos

Cada fichero de su sistema está representado por un inodo. Un inodo contiene toda la información acerca de un fichero. Sin embargo, el inodo no es directamente visible. En su lugar, cada inodo se vincula al sistema de ficheros mediante uno o más enlaces no simbólicos (hard links). Los enlaces no simbólicos (hard links) contienen el nombre del fichero y el número de inodo. El inodo contiene el fichero propiamente dicho, es decir, el emplazamiento de la información que se almacena en el disco, sus permisos de acceso, el tipo de fichero, etcétera. El sistema es capaz de hallar cualquier inodo con tal de disponer del número de inodo.

Un único fichero puede tener más de un enlace no simbólico (hard link). Ello significa que múltiples nombres de fichero se refieren al mismo fichero físico en el disco (es decir, que están asociados al mismo número de inodo). Sin embargo, no es posible realizar enlaces no simbólicos (hard links) de un sistema de ficheros a otro: todas las referencias duras a un fichero específico (inodo) deben tener lugar en el mismo sistema de ficheros. Esto se debe a que cada sistema de ficheros dispone de su propia serie de inodos, y pueden existir inodos duplicados en diferentes sistemas de ficheros.

Puesto que todos los enlaces no simbólicos (hard links) a determinado inodo se refieren al mismo fichero, puede hacer cambios al fichero llamándolo por uno de sus nombres, y luego ver esos cambios cuando lo llame por un nombre distinto. Pruebe este ejemplo:

     cd; echo "hola" > primerenlace
Haga un cd a su directorio de trabajo y cree un fichero de nombre primerenlace conteniendo la palabra «hola». Lo que realmente ha hecho es redireccionar la salida de echo (echo simplemente repite lo que se le da), y colocar la salida en primerenlace. Véase el capítulo sobre los intérpretes de órdenes para más información.

     cat primerenlace
Confirma el contenido de primerenlace.

     ln primerenlace segundoenlace
Crea un enlace no simbólico (hard link): segundoenlace ahora apunta al mismo inodo que primerenlace.

     cat segundoenlace
Confirma que segundoenlace es lo mismo que primerenlace.

     ls -l
Observe que el número de inodos que se listan para primerenlace y segundoenlace es de 2.

     echo "cambio" >> segundoenlace
Este es otro truco para redireccionar del intérprete de órdenes: no se inquiete ahora por los detalles. Acaba de añadir la palabra «cambio» a segundoenlace. Confírmelo con cat segundoenlace.

     cat primerenlace
primerenlace también tiene la palabra «cambio» añadida al fichero. Se debe a que primerenlace y segundoenlace remiten al mismo fichero. No importa mediante qué nombre lo llame en el momento de cambiarlo.

     chmod a+rwx primerenlace
Cambia los permisos en primerenlace. Introduzca la orden ls -l para confirmar que los permisos en segundoenlace se han cambiado también. Esto significa que la información sobre permisos se almacena en el inodo, no en los enlaces.

     rm primerenlace
Borra ese vínculo. Es ésta una sutileza de rm. Esa orden lo que borra realmente son los enlaces, no los ficheros. Teclee ahora ls -l y observe que segundoenlace está ahí todavía. Observe también que el número de enlaces no simbólicos (hard links) para segundoenlace se ha reducido a uno.

     rm segundoenlace
Borra el vínculo restante. Cuando ya no existan más enlaces a un fichero, Linux borrará el fichero en sí, es decir su inodo.

Todos los ficheros tienen este mismo comportamiento, incluso los ficheros especiales tales como los dispositivos. ( (e.g. /dev/hda).

Un directorio es simplemente una lista de nombres de ficheros y números de inodos, es decir, una lista de enlaces no simbólicos (hard links). Cuando se crea un enlace no simbólico (hard link), simplemente se añade una pareja nombre-inodo a un directorio. Cuando se borra un fichero, se elimina del directorio el enlace no simbólico (hard link).


next up previous contents index
Next: Tipos de ficheros Up: Ficheros avanzados Previous: Ficheros avanzados   Índice General   Índice de Materias
Enrique Zanardi 2000-11-26