Saltar al contenido principal

Lab 3.3 - Búsqueda de Archivos y Enlaces

Objetivos​

Al final de este laboratorio, usted será capaz de:

  • Buscar archivos con find y locate
  • Crear enlaces simbólicos
  • Crear enlaces duros
  • Comprender las diferencias entre los tipos de enlaces
  • Utilizar los enlaces en escenarios prácticos

Prerrequisitos​

  • Ubuntu 24.04 instalado
  • Terminal abierto
  • Acceso de usuario normal

Ejercicio 1: Búsqueda con find​

Paso 1: Búsqueda Básica​

# Crear archivos de prueba
mkdir -p ~/test-search/{docs,scripts,data}
touch ~/test-search/docs/{file1.txt,file2.txt}
touch ~/test-search/scripts/{script1.sh,script2.sh}
touch ~/test-search/data/{data1.csv,data2.csv}

# Buscar por nombre
find ~/test-search -name "file1.txt"

# Buscar con wildcards
find ~/test-search -name "*.txt"

# Buscar por tipo
find ~/test-search -type f # Solo archivos
find ~/test-search -type d # Solo directorios

Paso 2: Búsqueda Avanzada​

# Por tamaño
find ~/test-search -size +1M # Más de 1MB
find ~/test-search -size -1k # Menos de 1KB

# Por fecha de modificación
find ~/test-search -mtime -1 # Modificados en las últimas 24h
find ~/test-search -mtime +7 # Modificados hace más de 7 días

# Por permisos
find ~/test-search -perm 755

# Combinaciones
find ~/test-search -name "*.txt" -mtime -1

Paso 3: Ejecutar Comandos​

# Buscar y eliminar (¡cuidado!)
find ~/test-search -name "*.tmp" -delete

# Buscar y mostrar
find ~/test-search -name "*.txt" -exec ls -lh {} \;

# Buscar y contar
find ~/test-search -type f | wc -l

Ejercicio 2: locate​

Paso 1: Instalación y Configuración​

# Instalar locate
sudo apt update
sudo apt install mlocate

# Actualizar la base de datos
sudo updatedb

# Buscar
locate file1.txt

# Búsqueda insensible a mayúsculas/minúsculas
locate -i file

Paso 2: Limitar los Resultados​

# Limitar el número de resultados
locate file | head -10

# Contar
locate file | wc -l

Ejercicio 3: Enlaces Simbólicos​

Paso 1: Crear Enlaces Simbólicos​

# Crear un archivo
echo "Contenu original" > ~/original.txt

# Crear un enlace simbólico
ln -s ~/original.txt ~/lien-symbolique.txt

# Ver el enlace
ls -l ~/lien-symbolique.txt
# Nota la flecha: lien-symbolique.txt -> /home/user/original.txt

# Leer a través del enlace
cat ~/lien-symbolique.txt

Paso 2: Enlaces Simbólicos a Directorios​

# Crear un enlace a un directorio
ln -s ~/test-search ~/lien-repertoire

# Usar el enlace
ls ~/lien-repertoire
cd ~/lien-repertoire

Paso 3: Enlaces Simbólicos Absolutos vs Relativos​

cd ~/test-search

# Enlace absoluto
ln -s /home/$USER/original.txt lien-absolu.txt

# Enlace relativo
ln -s ../original.txt lien-relatif.txt

# Ver la diferencia
ls -l lien-*.txt

Ejercicio 4: Enlaces Duros​

Paso 1: Crear Enlaces Duros​

# Crear un archivo
echo "Contenu" > ~/fichier-original.txt

# Crear un enlace duro
ln ~/fichier-original.txt ~/lien-dur.txt

# Ver ambos archivos
ls -li ~/fichier-original.txt ~/lien-dur.txt
# Nota: mismo inode (primer número)

Paso 2: Propiedades de los Enlaces Duros​

# Modificar a través del enlace duro
echo "Nouveau contenu" >> ~/lien-dur.txt

# Ver el archivo original
cat ~/fichier-original.txt # ¡Contenido modificado!

# Contar los enlaces
ls -l ~/fichier-original.txt
# El número después de los permisos = número de enlaces duros

Paso 3: Eliminar un Enlace Duro​

# Eliminar el archivo "original"
rm ~/fichier-original.txt

# ¡El enlace duro sigue existiendo!
cat ~/lien-dur.txt # Contenido sigue ahí

# Verificar los inodes
ls -li ~/lien-dur.txt

Ejercicio 5: Comparación Enlaces Simbólicos vs Duros​

Paso 1: Prueba de Eliminación​

# Crear archivo, enlace simbólico y enlace duro
echo "Test" > test.txt
ln -s test.txt lien-sym.txt
ln test.txt lien-dur.txt

# Eliminar el archivo original
rm test.txt

# Probar el enlace simbólico
cat lien-sym.txt # ❌ Error: archivo no encontrado

# Probar el enlace duro
cat lien-dur.txt # ✅ ¡Sigue funcionando!

Paso 2: Limitaciones de los Enlaces Duros​

# Los enlaces duros no funcionan para:
# 1. Directorios
# ln dir1 dir2 # ❌ Error

# 2. Sistemas de archivos diferentes
# ln /mnt/external/file.txt ~/lien.txt # ❌ Error si FS diferente

# 3. Los enlaces simbólicos pueden cruzar FS
ln -s /mnt/external/file.txt ~/lien-sym.txt # ✅ Funciona

Ejercicio 6: Casos de Uso Prácticos​

Paso 1: Scripts en el PATH​

# Crear un script
cat > ~/mon-script.sh << 'EOF'
#!/bin/bash
echo "Script exécuté!"
EOF

chmod +x ~/mon-script.sh

# Crear un enlace en un directorio del PATH
sudo ln -s ~/mon-script.sh /usr/local/bin/mon-script

# Usar desde cualquier lugar
mon-script

Paso 2: Versiones de Software​

# Simular versiones
mkdir -p ~/app/{v1.0,v2.0}
echo "Version 1.0" > ~/app/v1.0/app.txt
echo "Version 2.0" > ~/app/v2.0/app.txt

# Enlace a la versión actual
ln -s ~/app/v2.0 ~/app/current

# Usar
cat ~/app/current/app.txt

# Cambiar de versión fácilmente
rm ~/app/current
ln -s ~/app/v1.0 ~/app/current

Paso 3: Configuración​

# Archivo de configuración en home
echo "config=value" > ~/.myapp-config

# Enlace desde /etc
sudo ln -s ~/.myapp-config /etc/myapp-config

# Usar
cat /etc/myapp-config

Verificación​

Checklist​

Verifique que usted puede:

  • Buscar archivos con find
  • Usar locate para búsqueda rápida
  • Crear enlaces simbólicos (ln -s)
  • Crear enlaces duros (ln)
  • Comprender las diferencias entre ambos tipos
  • Utilizar los enlaces en escenarios prácticos

Preguntas de Reflexión​

  1. ¿Cuándo usar un enlace simbólico vs un enlace duro?

    • Simbólico: directorios, archivos en diferentes FS, versiones
    • Duro: mismo FS, respaldo de seguridad
  2. ¿Por qué los enlaces duros comparten el mismo inode?

    • Apuntan a los mismos datos en el disco
    • El archivo solo se elimina cuando se eliminan todos los enlaces
  3. ¿Cuál es la diferencia entre find y locate?

    • find: búsqueda en tiempo real, más flexible
    • locate: base de datos preindexada, más rápido pero puede estar desactualizado

Próximos Pasos​

  • Lab 3.4: Práctica Completa
  • Capítulo 3.6: Búsqueda de Archivos
  • Capítulo 3.7: Enlaces Simbólicos y Duros

Lab creado el: diciembre 2024 - Probado en Ubuntu 24.04