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: Tipos de ficheros
Up: Ficheros avanzados
Previous: Ficheros avanzados
  Índice General
  Índice de Materias
Enrique Zanardi
2000-11-26