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).
Enlaces Simbólicos (Soft Links)
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
lenls -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
Enlaces Duros (Hard Links)
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ística | Enlace Simbólico | Enlace Duro |
|---|---|---|
| Inode | Diferente | Igual |
| Directorios | Sí | No |
| Sistemas de archivos | Sí | No |
| Archivo inexistente | Sí | No |
| Eliminación objetivo | Enlace roto | Funciona |
| Rendimiento | Ligeramente más lento | Idéntico |
| Identificación | l en ls -l | Mismo 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