Enlaces: ln

O cómo asociar ficheros y directorios desde otras localizaciones

Introducción

En Linux, todo es un archivo, y los archivos se identifican internamente mediante un inodo que es una estructura que almacena metadatos como permisos, propietario y ubicación en disco. El nombre que ves en el directorio no es el archivo en sí, sino una referencia a ese inodo.

Los enlaces son precisamente eso: referencias adicionales a archivos o directorios. Existen dos tipos con comportamientos muy distintos: los hard links y los soft links (symlinks). Entender la diferencia es clave para gestionar el sistema de archivos de forma eficiente.

Un hard link crea un segundo nombre que apunta al mismo inodo. No hay original ni copia: ambos nombres son completamente equivalentes. El archivo solo se elimina del disco cuando todos sus hard links desaparecen.

Crear un hard link


$ echo "Contenido importante" > original.txt
$ ln original.txt respaldo.txt
      

Como vemos creamos primero un fichero real y luego creamos un enlace duro para asociarlo con otro nombre y otra ruta.

Si lo listamos para ver su inodo asociado


$ ls -li
total 8
1459574 -rw-rw-r-- 2 pepesan pepesan 21 abr 29 17:07 original.txt
1459574 -rw-rw-r-- 2 pepesan pepesan 21 abr 29 17:07 respaldo.txt
      

Como vemos tenemos el mismo número de inodo en ambos casos. Si eliminas el original el otro sigue existiendo.

Los hard links no pueden apuntar a directorios ni cruzar particiones distintas.

Un symlink es un archivo especial que contiene la ruta hacia otro archivo. Es similar a un acceso directo. Si el archivo original se elimina, el symlink queda roto.

Creamos un enlace simbólico


  $ ln -s original.txt acceso.txt
      

En este caso el nombre acceso.txt sólo se asocia al fichero original.txt Si se borrar el fichero original.txt el en lace existe pero no apunta a nada real.

Opciones frecuentes

  • -f fuerza sobreescribir si el enlace ya existe
  • -v muestra lo que hace (verbose)
  • -i pide confirmación antes de sobreescribir

Inspeccionar enlaces

Cuando trabajas con enlaces es fundamental poder verificar su estado: saber a qué inodo apuntan, cuántos hard links tiene un archivo, o hacia dónde redirige un symlink. Linux ofrece varias herramientas para esto.

stat

stat muestra información detallada del inodo: permisos, propietario, tamaño, fechas y el número de hard links que apuntan a ese inodo.

Ejemplo de uso

  $ stat archivo.txt
      

readlink

readlink es exclusivo para symlinks: muestra la ruta a la que apunta el enlace simbólico. Con -f resuelve la ruta absoluta completa, incluso si hay symlinks encadenados.

Ejemplo de uso

  $ readlink acceso.txt
  $ readlink -f acceso.txt
      

find -xtype l

find -xtype l permite localizar symlinks rotos en el sistema, útil para limpiar referencias huérfanas tras mover o eliminar archivos.

Ejemplo:

  $ find . -xtype l
      

Ayuda y documentación: man, info, whatis, /usr/share/doc/.

Índice de la sección

Índice del curso