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.
Hard Link — Enlace físico
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.
Soft Link
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