104.6 Crear y cambiar enlaces duros y simbolicos - Comandos clave

Crear enlaces

ComandoDescripcion
ln archivo enlaceCrear enlace duro
ln -s objetivo enlaceCrear enlace simbolico
ln -s /ruta/absoluta enlaceEnlace simbolico con ruta absoluta
ln -s ../relativa enlaceEnlace simbolico con ruta relativa
ln -sf objetivo enlaceCrear/sobrescribir enlace simbolico (force)
ln -s /var/log /home/user/logsEnlace simbolico a directorio

Identificar enlaces

ComandoDescripcion
ls -lVer tipo (l = simbolico) y destino (-> target)
ls -liVer inodos + permisos (enlaces duros comparten inodo)
ls -i archivo1 archivo2Comparar inodos (iguales = enlace duro)
stat archivoInfo completa del inodo
stat -L enlaceInfo del destino (siguiendo el enlace)
readlink enlaceVer destino de enlace simbolico
readlink -f enlaceResolver ruta absoluta completa
file enlaceIdentifica si es enlace simbolico

Buscar enlaces

ComandoDescripcion
find /ruta -type lBuscar enlaces simbolicos
find /ruta -xtype lBuscar enlaces simbolicos rotos
find /ruta -type f -links +1Archivos con mas de 1 enlace duro
find /ruta -samefile archivoBuscar enlaces duros a un archivo
find /ruta -inum 1234567Buscar por numero de inodo

Tabla comparativa rapida

AspectoEnlace duro (ln)Enlace simbolico (ln -s)
InodoMismoDiferente
Cruza FSNoSi
A directoriosNoSi
Borrar originalDatos persistenEnlace roto
Tipo en ls -l- (normal)l (link)
Visual en ls -lSin indicador-> destino
Puede ser a inexistenteNoSi

Conteo de enlaces en ls -l

-rw-r--r-- 2 sandra sandra 1024 ... archivo.txt
            ^
            Numero de enlaces duros que apuntan a este inodo
TipoConteo minimo
Archivo regular (sin enlaces extra)1
Archivo con 1 enlace duro adicional2
Directorio vacio2 (el directorio + . dentro)
Directorio con N subdirectorios2 + N (por los .. de cada subdir)

Ejemplos practicos

# Crear enlace duro y verificar
ln original.txt duro.txt
ls -li original.txt duro.txt    # Mismo inodo, conteo = 2
 
# Crear enlace simbolico y verificar
ln -s original.txt simb.txt
ls -li original.txt simb.txt    # Diferente inodo, tipo 'l'
 
# Ver destino de enlace simbolico
readlink simb.txt               # original.txt
readlink -f simb.txt            # /ruta/completa/original.txt
 
# Borrar original: duro sobrevive, simb se rompe
rm original.txt
cat duro.txt                    # Funciona
cat simb.txt                    # Error: No such file or directory
 
# Sobrescribir enlace simbolico existente
ln -sf nuevo_destino.txt simb.txt