4.4.- Administrar enlaces

ln_enlaces_1ln es un comando de los sistemas operativos UNIX y derivados que crea un enlace, un tipo de archivo especial, que apunta a otro archivo existente. Similar a los accesos directos de Windows y los alias de Mac OS. Linux emplea enlaces para facilitar el acceso a los ficheros, dotar de varios nombres a un comando, permite a los programas buscar los mismos ficheros en distintas ubicaciones.

Hay dos tipos de enlace:

  1. hard limks -> Enlaces de referencia.
  2. soft links -> Enlaces simbólicos.

Su sintaxis es:

ln_sintaxis

ln_sintaxis_2

El origen es el fichero original y el enlace es el nombre del enlace que desea crear. Este comando admite opciones que tienen varios efectos:

Borrar ficheros objetivo.- -f o --force hacen que ln borre cualquier enlace o fichero existente que tenga el nombre del enlace objetivo. Las opciones -i o --interactive tienen un efecto similar, pero nos preguntará si deseamos reemplazar los ficheros y enlaces existentes.

Crear los enlaces de referencia a directorio.- Generalmente,  no se pueden crear enlaces de referencia a directorios. No obstante, el usuario root puede intentarlo pasándole a ln las opciones -d, -F o --directory (los enlaces simbólicos a directorios no suponen ningún problema). Pero en la práctica, no es probable que funcione esta característica debido a que la mayoría de los sistemas de ficheros no la admiten.

Crear un enlace simbólico.- El comando ln crea enlaces simbólicos por defecto. Para crear un enlace simbólico, le pasamos el comando son las opciones -s o --symbolic.

ln_ejemplo_s

Cuando se ejecuta ls -l en un directorio donde hay un enlace simbólico, éste se muestra en color (en mi caso azul).

La «l» al comienzo de la línea especifica el tipo de archivo listado, en este caso, un link.

 Hay más opciones que realizan tareas menos frecuentes; consulte la página man de ln para conocer más detalles.

profesor-tuxPor defecto ln crea enlaces de referencia creando dos entradas de directorio que apuntan al mismo fichero (en concreto al mismo nodo índice). Ambos nombres tienen la misma importancia y validez ya que ninguno de los dos nombres tiene más importancia que el otro, excepto, en que uno se creó primero y el otro después.

Para borrar el fichero, debe borrar ambos enlaces que hagan referencia al fichero. Por el modo que tiene en crear los enlaces de referencia, éstos tienen que existir en un único sistema de ficheros de bajo nivel no pudiéndose crear un enlace de referencia desde, por ejemplo, un sistema de ficheros raíz (/) hacia un fichero de ficheros independiente que tengamos montado sobre éste, tal como, /home (si fuera un sistema de fichero independiente).  Los sistemas de ficheros subyacentes deben soportar los enlaces de referencia.

Todos los sistemas Linux incluyen esta característica, pero algunos distintos a Linux no lo hacen. Por el contrario, los enlaces simbólicos son un tipo especial de fichero independiente cuyo contenido apunta al fichero enlazado. El acceso que hace Linux a estos ficheros es enlazando cada vez que intenta acceder al enlace simbólico, por lo que, en gran medida, acceder a un enlace simbólico es como acceder al fichero original.

Podemos crear punteros entre sistemas de ficheros de bajo nivel, ya que, los enlaces simbólicos son básicamente ficheros que contienen los nombres de ficheros; puede apuntar desde el sistema de ficheros raíz (/) a un sistema de ficheros /home independientemente, por ejemplo.

El proceso de búsqueda para acceder al fichero original desde el enlace consume una cantidad mínima de tiempo, esto hace que acceder a los enlaces simbólicos sea más lento que el acceso de referencia aunque no lo suficiente para percatarnos de ello, excepto en condiciones muy atípicas o pruebas artificiales.

ln_ejemplo_4En la práctica los enlaces simbólicos son más comunes que los enlaces de referencia siendo menores sus desventajas pero con una gran capacidad para enlazar entre sistemas de ficheros. Linux emplea enlaces para determinadas tareas críticas de administración del sistema. Por ejemplo, los scripts de inicio de System V (Sys V) utilizan enlaces simbólicos en los directorios del modo de ejecución (próximamente veremos una descripción más detallada). Frecuentemente se puede acceder también a través de enlaces a determinados comandos que han sido conocido por varios nombres a lo largo de la historia. Por ejemplo, los programas /sbin/fsck.ext2, /sbin/fsck.ext3 y /sbin/e2fsck normalmente, son enlaces de referencia en algunos sistemas o simbólicos en otros. Estos enlaces podemos dejarlos tal y como están en el sistema aunque a veces tendremos que ajustarlos.