Saltar al contenido principal

Capítulo 3.7 - Enlaces Simbólicos y Duros

Objetivos de Aprendizaje​

Al final de este capítulo, usted será capaz de:

  • Comprender la diferencia entre enlaces simbólicos y duros
  • Crear y gestionar enlaces simbólicos
  • Crear y gestionar enlaces duros
  • Elegir el tipo de enlace adecuado según el caso

¿Qué es un Enlace?​

Un enlace es una referencia a un archivo. Linux soporta dos tipos de enlaces: simbólicos (soft) y duros (hard).


Características​

Un enlace simbólico es un puntero a otro archivo o directorio.

# Crear un enlace simbólico
ln -s /ruta/a/objetivo enlace_simbolico
ln -s objetivo.txt enlace.txt

# Ver a dónde apunta el enlace
ls -l enlace.txt
readlink enlace.txt

Características:

  • Apunta a un nombre de archivo (no al inode)
  • Puede apuntar a archivos inexistentes
  • Puede apuntar a directorios
  • Puede atravesar sistemas de archivos
  • Identificado por l en ls -l

Ejemplo​

# Crear un archivo
echo "Contenido" > original.txt

# Crear un enlace simbólico
ln -s original.txt enlace.txt

# Verificar
ls -li
# 12345 -rw-r--r-- 1 user group 8 Jan 1 12:00 original.txt
# 12346 lrwxrwxrwx 1 user group 12 Jan 1 12:01 enlace.txt -> original.txt

# Leer a través del enlace
cat enlace.txt # Muestra "Contenido"

# Eliminar el original
rm original.txt

# El enlace sigue existiendo pero está roto
cat enlace.txt # Error: No such file or directory
ls -l enlace.txt # enlace.txt -> original.txt (rojo, roto)

Ventajas​

  • Puede apuntar a directorios
  • Puede atravesar sistemas de archivos
  • Fácil de identificar (flecha en ls -l)
  • Puede apuntar a archivos inexistentes (para creación futura)

Desventajas​

  • Enlaces rotos si se elimina el objetivo
  • Ligeramente más lento (desreferenciación)
  • Puede crear bucles

Características​

Un enlace duro es una referencia directa al mismo inode que otro archivo.

# Crear un enlace duro
ln objetivo.txt enlace.txt

# Verificar (mismo inode)
ls -li
# 12345 -rw-r--r-- 2 user group 8 Jan 1 12:00 objetivo.txt
# 12345 -rw-r--r-- 2 user group 8 Jan 1 12:00 enlace.txt
# Mismo inode (12345), mismo contenido

Características:

  • Referencia el mismo inode
  • Mismo archivo (varios nombres)
  • No puede apuntar a directorios
  • No puede atravesar sistemas de archivos
  • Contador de enlaces en ls -l (2 en el ejemplo)

Ejemplo​

# Crear un archivo
echo "Contenido" > original.txt

# Crear un enlace duro
ln original.txt enlace.txt

# Verificar
ls -li
# Mismo inode, mismo tamaño, mismo contenido

# Modificar a través de un enlace
echo "Nuevo contenido" > enlace.txt

# Verificar el original
cat original.txt # Muestra "Nuevo contenido"

# Eliminar el original
rm original.txt

# ¡El enlace sigue funcionando!
cat enlace.txt # Muestra "Nuevo contenido"

Contador de Enlaces​

# Ver el contador de enlaces
ls -l archivo.txt
# -rw-r--r-- 3 user group 1024 Jan 1 12:00 archivo.txt
# El "3" indica 3 enlaces duros a este archivo

# El archivo realmente se elimina solo cuando
# el contador de enlaces llega a 0

Ventajas​

  • No hay enlaces rotos (aunque se elimine un nombre)
  • Rendimiento idéntico al original
  • Sin desreferenciación

Desventajas​

  • No puede apuntar a directorios
  • No puede atravesar sistemas de archivos
  • Menos flexible

Comparación​

CaracterísticaEnlace SimbólicoEnlace Duro
InodeDiferenteIgual
DirectoriosSíNo
Sistemas de archivosSíNo
Archivo inexistenteSíNo
Eliminación objetivoEnlace rotoFunciona
RendimientoLigeramente más lentoIdéntico
Identificaciónl en ls -lMismo inode

Casos de Uso​

Enlaces Simbólicos​

Cuándo usar:

  • Apuntar a directorios
  • Crear accesos directos
  • Apuntar a archivos en otros sistemas de archivos
  • Configuración flexible

Ejemplos:

# Acceso directo a un directorio
ln -s /var/www/html ~/www

# Versión actual
ln -s app-v2.0 app-current

# Configuración
ln -s /etc/nginx/sites-available/misitio /etc/nginx/sites-enabled/

Enlaces Duros​

Cuándo usar:

  • Copia de seguridad (varios nombres)
  • Ahorro de espacio (mismo archivo)
  • Rendimiento crítico

Ejemplos:

# Varios nombres para el mismo archivo
ln archivo.txt backup.txt
ln archivo.txt archive.txt

# Todos apuntan al mismo inode

Comandos Útiles​

# Ver todos los enlaces a un inode
find /home -inum 12345

# Encontrar enlaces simbólicos rotos
find /home -type l ! -exec test -e {} \; -print

# Contar los enlaces duros
stat archivo.txt | grep Links

# Ver a dónde apunta un enlace simbólico
readlink -f enlace.txt # Ruta absoluta resuelta

Resumen​

En este capítulo, usted ha aprendido:

Enlaces simbólicos: Punteros a nombres de archivos (ln -s)
Enlaces duros: Referencias al mismo inode (ln)
Diferencias: Simbólicos más flexibles, duros más robustos
Casos de uso: Simbólicos para directorios/flexibilidad, duros para robustez
Gestión: ls -li para ver, readlink para simbólicos


Próximos Pasos​

Capítulo 3.8: Tipos de Sistemas de Archivos
Lab 3.3: Búsqueda y Enlaces


Capítulo creado el: Diciembre 2024