Enlaces de Ficheros
Los enlaces ofrecen la posibibilidad de dar a un único fichero múltiples nombres. Estos ficheros van a ser identificados mediante el sistema operativo por su numero de inodo, el cual se genera de forma semialeatoria. Solo para ficheros y sólo en particiones linux.
Un inodo es un enlace que resulta el único identificador del fichero para el sistema de ficheros. Un directorio, por tanto, será una lista de números de inodo con sus correspondientes nombres de fichero. Cada nombre de fichero en un directorio es un enlace a un inodo particular.
Enlaces Duros o hard links:
La orden ln es usada para crear enlaces para un fichero.
Usando ls -i, veremos el numero de inodo para el fichero.
# ln fichero creará un enlace para fichero.
ln fichero fhichero2 creará un enlace llamado fichero2 que corresponderá al mismo fichero.
Utilizando ls -i veremos que los dos ficheros tienen el mismo inodo.
# ls -i fichero fichero2
Estos enlaces se denominan enlaces duros (hard links) porque directamente crean el enlace al inodo. También hay que tener en cuenta que solamente podremos crear enlaces duros entre ficheros del mismo sistema de ficheros; los enlaces simbólicos no tendrán este tipo de restricciones.
Cuando eliminamos un fichero con rm, en realidad, solamente estamos eliminando un enlace a un fichero. Si utilizamos la orden rm fichero Solamente el nombre fichero es eliminado, , fichero2 seguirá existiendo.
Un fichero estará definitivamente eliminado del sistema cuando no queden enlaces a el. En realidad, la norma es que los ficheros tengan solamente un enlace duro.
Un modo de saber cuantos enlaces tiene un fichero es con la orden ls -l Fíjate en la salida estándar por pantalla, la primera columna indica los permisos, como vimos en lecciones pasadas, y una segunda columna con un número te indicará el número de enlaces del fichero, o, si es un directorio, el número de directorios que contiene, en nuestro ejemplo te mostraría lo siguiente:
ls -l fichero fichero2
-rw-r-r- 2 root root 12 Aug 5 16:51 fichero
-rw-r-r- 2 root root 12 Aug 5 16:50 fichero2
un directorio, por tanto, no es otra cosa que un fichero que contiene información sobre la dirección del enlace al inodo. También, cada directorio tiene al menos dos enlaces duros en el: . (punto) enlace que apunta a si mismo y .. (punto punto) enlace que apunta al directorio padre. En el directorio raíz (/), el enlace .. (punto punto) simplemente apunta a /.
Buscar todos los enlaces duros a un fichero.
En ciertas ocasiones puede resultar difícil localizar en que partes del árbol de directorio existen enlaces a determinados archivos. Para encontrarlos lo podemos hacer con la orden find:
find / -inum número
Enlaces Simbólicos
Un enlace simbólico permite dar a un fichero el nombre de otro, pero no enlaza el fichero con un inodo, es decir, en realidad lo que hacemos es enlazar directamente al nombre del fichero. Esto podría parecerse bastante a lo que Windows nos tiene acostumbrados.
Con la orden ln -s creamos un enlace simbólico a un fichero. Por ejemplo:
ln -s archivo archivo2
Hay que tener en cuenta que el nombre del enlace simbólico no soporta rutas completas, por lo que para crearlo, será imprescindible situarse dentro del directorio en el que queramos que quede colocado dicho enlace.
Si lo verificamos de nuevo con la orden ls -l vemos que el fichero fichero es un enlace simbólico apuntando a fichero2
ls -l fichero fichero2
Los bits de permisos en un enlace simbólico no se usan (siempre aparecen como (rwxrwxrwx). En su lugar, los permisos del enlace simbólico son determinados por los permisos del fichero apuntado. Asimismo, si el fichero apuntado es eliminado, los enlaces simbólicos permanecen, pero ya no serán válidos y carecerán de sentido.
Los enlaces duros y simbólicos son similares en su funcionamiento, pero hay algunas diferencias. Pueden crearse enlaces simbólicos a un fichero que no esté en el mismo dispositivo de almacenamiento. Los enlaces simbólicos son procesados por el núcleo de forma diferente a los duros, lo cual es solo una diferencia técnica, pero a veces importante. Los enlaces simbólicos son de ayuda puesto que identifican al fichero al que apuntan; con enlaces duros no es tan fácil saber que fichero esta enlazado al mismo inodo.
Aunque en un principio no pudiera parecernos que los enlaces valgan para mucho, el sistema operativo los usa muy a menudo, Los enlaces simbólicos son, por ejemplo, especialmente importantes para las imágenes de las librerías compartidas en /lib, lo que facilita mucho la conexión de los diferentes programas con esas librerías.