Enlaces/Ligas

Estas aquí:
<< Regresar

Ligas duras y suaves

En Linux/Unix existen dos conceptos de ‘enlace’ (conocidos también como ligas), llamados usualmente liga dura (o física) y liga suave (o simbólica).

ln crea enlaces entre ficheros. De forma predeterminada hace ligas duras, con la opción -s hace ligas simbólicas .

Ligas duras

Una liga dura es simplemente un nombre para un fichero (Y un fichero puede tener varios nombres. Se borra del disco solamente cuando se elimine el último nombre. El número de nombres lo muestra ls. No existe el concepto de nombre «original», todos tienen la misma categoría usualmente, pero no necesariamente todos los nombres de un fichero se encuentran en el sistema de ficheros que también contiene sus datos.).

Consideraciones:

  • Es un apuntador idéntico al archivo original.
  • Todo cambio efectuado a la liga dura como al original será reflejado en el otro.
  • No se pueden emplear para referenciar directorios o diferentes sistemas de archivos.
  • Es necesario que el archivo exista para poder crearlo.

Podemos pensar que la liga dura provoca que un archivo esté en dos lugares a la vez. Podemos saber el número de ligas duras que tiene un archivo por medio de la instrucción ls -l la cual nos reportará en su segundo campo las ligas duras de dicho archivo.

Por omisión ln crea ligas duras.
Sintaxis:

ln <archivo> <liga>

Ejemplo:

Creamos un archivo llamado hard_link.txt

touch hard_link.txt

Creamos la liga dura

ln hard_link.txt hlink.ln

Editamos hlink.ln agregando cualquier contenido y desplegamos el contenido de hardlink

echo "Hola" >> hlink.ln
cat hard_link.txt
Hola

Si eliminamos hard_link.txt, e imprimos el contenido de hlink.ln notaremos que la información aún existe, para eliminarlo completamente tendríamos que eliminar la liga dura también.

rm hard_link.txt</code>
cat hlink.ln
Hola

Ligas suaves

Una liga suave (o enlace simbólico, o acceso directo) es un tipo completamente diferente. Es un archivo especial que contiene un path. Así, las ligas suaves pueden apuntar a archivos en sistemas de archivos diferentes y no tienen por qué apuntar a ficheros que existan realmente. Cuando se accede a ellos (con las llamadas al sistema open o stat) el kernel del sistema operativo reemplaza una referencia a una liga suave con una referencia al fichero nombrado en el path (Sin embargo, con rm y unlink se borra el mismo enlace, no el fichero al cual apunte. Existen las llamadas al sistema especiales lstat y readlink que leen el estado de una liga suave y el nombre de fichero al cual apunte. Para algunas otras llamadas al sistema, entre distintos sistemas operativos hay algunas variaciones.).

Podemos emplear la instrucción ls seguida de la bandera -l para conocer las ligas suaves de un archivo

ls -l /usr/bin/awk
lrwxrwxrwx 1 root root 21 oct 20 05:22 /usr/bin/awk -> /etc/alternatives/awk

En el ejemplo anterior nos muestra que /usr/bin/awk es una liga suave a /etc/alternatives/awk.

El utilizar ligas simbólicas es transparente para prácticamente cualquier aplicación.

Consideraciones:

  • La liga simbólica puede tener un nombre diferente al archivo original.
  • Puede apuntar a directorios o a archivos.
  • Al borrar el enlace simbólico no tendrá efecto sobre el directorio o archivo.
  • Al generarse la liga simbólica, ésta tendrá como permisos 777 pero los permisos efectivos serán los que tenga el archivo/directorio al que se hace referencia.

La sintaxis para el uso de las ligas suaves es simple:

ln -s <archivo/directorio> <liga>

Ejemplo:

Creación de una liga suave llamada temporal al directorio /tmp

ln -s /tmp temporal

Para saber hacia donde apunta una liga suave hacemos un:

ls -l
lrwxrwxrwx 1 dnay dnay 5 dic 2 13:30 temporal -> /tmp/

Si navegamos hacia dentro del temporal

cd temporal

hacemos un:

ls -l

y podemos compara los contenidos con /tmp

ls -l /tmp

Notaremos que los contenidos son exactamente iguales. También podemos conocer la ubicación real de un archivo desde temporal con readlink:

readlink -f <archivo>

Ejemplo:

pwd
/home/dnay/temporal
ls
ssh-KLrfe9IbLQV8
readlink -f ssh-KLrfe9IbLQV8
/tmp/ssh-KLrfe9IbLQV8

Video: Ejemplo de ligas suaves y duras

En este video se hará una práctica para comprender mejor el funcionamiento de las ligas suaves y duras

 

Última actualización: septiembre 19, 2018

Deja un comentario