Saltar al contenido principal

10. Interacción Avanzada con el Sistema de Archivos en Bash

Enlaces Simbólicos y Duros

ln - Crear Enlaces

  • Enlace duro: Un enlace adicional a un archivo existente en el mismo sistema de archivos.
  • Enlace simbólico (soft link): Un archivo que contiene una referencia a otro archivo o directorio.
  • Comandos:
    • ln [archivo_original] [enlace_duro]: Crear un enlace duro.
    • ln -s [archivo_original] [enlace_simbólico]: Crear un enlace simbólico.
    • Ejemplo:
      ln archivo.txt enlace_duro.txt
      ln -s archivo.txt enlace_simbólico.txt

Sistemas de Archivos Virtuales

/proc y /sys

  • Descripción: Directorios especiales que contienen información y configuraciones del sistema.
  • Uso:
    • /proc: Información sobre los procesos y el estado del sistema.
    • /sys: Información y configuración del hardware y los controladores.
    • Ejemplo:
      cat /proc/cpuinfo
      ls /sys/class/net

Sincronización de Archivos

rsync - Sincronización Remota y Local

  • Descripción: Herramienta poderosa para sincronizar archivos y directorios de manera eficiente.
  • Comandos:
    • rsync -av [origen] [destino]: Sincroniza archivos de forma recursiva con detalles.
    • rsync -avz [origen] [destino]: Sincroniza archivos de forma recursiva con compresión.
    • Ejemplo:
      rsync -av /home/rafa/proyecto /backup/proyecto
      rsync -avz /home/rafa/proyecto user@remote:/backup/proyecto

Compresión y Archivado de Archivos

tar - Crear y Extraer Archivos Tar

  • Descripción: Herramienta para crear y manipular archivos tar.
  • Comandos:
    • tar -cvf [archivo.tar] [archivos_o_directorios]: Crear un archivo tar.
    • tar -xvf [archivo.tar]: Extraer un archivo tar.
    • tar -cvzf [archivo.tar.gz] [archivos_o_directorios]: Crear un archivo tar comprimido con gzip.
    • tar -xvzf [archivo.tar.gz]: Extraer un archivo tar comprimido con gzip.
    • Ejemplo:
      tar -cvf archivo.tar archivo1.txt archivo2.txt
      tar -xvf archivo.tar
      tar -cvzf archivo.tar.gz directorio/
      tar -xvzf archivo.tar.gz

gzip y gunzip - Comprimir y Descomprimir Archivos

  • Descripción: Herramientas para comprimir y descomprimir archivos usando gzip.
  • Comandos:
    • gzip [archivo]: Comprimir un archivo.
    • gunzip [archivo.gz]: Descomprimir un archivo.
    • Ejemplo:
      gzip archivo.txt
      gunzip archivo.txt.gz

zip y unzip - Comprimir y Descomprimir Archivos Zip

  • Descripción: Herramientas para crear y extraer archivos zip.
  • Comandos:
    • zip [archivo.zip] [archivos]: Crear un archivo zip.
    • unzip [archivo.zip]: Extraer un archivo zip.
    • Ejemplo:
      zip archivo.zip archivo1.txt archivo2.txt
      unzip archivo.zip

Manejo de Permisos y Propiedades de Archivos

chmod - Cambiar Permisos de Archivos

  • Comandos:
    • chmod [permisos] [archivo]: Cambiar permisos de un archivo.
    • Ejemplo:
      chmod 755 script.sh

chown - Cambiar Propietario de Archivos

  • Comandos:
    • chown [propietario] [archivo]: Cambiar el propietario de un archivo.
    • Ejemplo:
      chown rafa archivo.txt

chgrp - Cambiar Grupo de Archivos

  • Comandos:
    • chgrp [grupo] [archivo]: Cambiar el grupo de un archivo.
    • Ejemplo:
      chgrp usuarios archivo.txt

Gestión Avanzada de Archivos y Directorios

find - Buscar Archivos y Directorios con Filtros Avanzados

  • Descripción: Busca archivos y directorios con opciones avanzadas de filtrado.
  • Comandos:
    • find [ruta] -name [nombre]: Busca archivos por nombre.
    • find [ruta] -type [tipo]: Busca archivos por tipo (f para archivos, d para directorios).
    • find [ruta] -mtime [días]: Busca archivos modificados en los últimos N días.
    • Ejemplo:
      find /home/rafa -name "*.txt"
      find /home/rafa -type d
      find /home/rafa -mtime -7

xargs - Construir y Ejecutar Comandos desde Resultados de Búsqueda

  • Descripción: Construye y ejecuta comandos utilizando la salida de otros comandos como entrada.
  • Comandos:
    • find [ruta] -name [nombre] | xargs [comando]: Ejecuta un comando sobre los resultados de find.
    • Ejemplo:
      find /home/rafa -name "*.log" | xargs rm

stat - Mostrar Información Detallada de Archivos

  • Descripción: Muestra información detallada sobre archivos y directorios.
  • Comandos:
    • stat [archivo]: Muestra información detallada.
    • Ejemplo:
      stat archivo.txt

df y du - Monitoreo de Espacio en Disco

  • Descripción: Herramientas para monitorear el uso del espacio en disco.
  • Comandos:
    • df: Reporta el uso del espacio en sistemas de archivos.
    • du: Reporta el uso del espacio en archivos y directorios.
    • Ejemplo:
      df -h
      du -sh /home/rafa

lsof - Listar Archivos Abiertos

  • Descripción: Lista información sobre archivos abiertos por los procesos.
  • Comandos:
    • lsof [archivo]: Muestra los procesos que tienen abierto un archivo.
    • Ejemplo:
      lsof /var/log/syslog

inotifywait - Monitoreo de Eventos en el Sistema de Archivos

  • Descripción: Monitorea eventos en el sistema de archivos en tiempo real.
  • Comandos:
    • inotifywait -m [directorio]: Monitorea un directorio para eventos.
    • Ejemplo:
      inotifywait -m /home/rafa/proyecto

Ejercicios de Interacción Avanzada con el Sistema de Archivos

Ejercicio 1: Enlaces Simbólicos y Duros

1.1 Crea un enlace duro llamado enlace_duro.txt a un archivo llamado archivo.txt.

1.2 Crea un enlace simbólico llamado enlace_simbólico.txt a un archivo llamado archivo.txt.

Ejercicio 2: Sistemas de Archivos Virtuales

2.1 Muestra la información sobre la CPU desde /proc.

2.2 Lista todas las interfaces de red disponibles en /sys/class/net.

Ejercicio 3: Sincronización de Archivos

3.1 Sincroniza el directorio proyecto desde tu directorio home a /backup.

3.2 Sincroniza el directorio proyecto a un servidor remoto usando rsync con compresión.

Ejercicio 4: Compresión y Archivado

4.1 Crea un archivo tar llamado archivos.tar que contenga dos archivos: archivo1.txt y archivo2.txt.

4.2 Extrae el contenido del archivo archivos.tar.

4.3 Crea un archivo tar comprimido con gzip llamado archivos.tar.gz que contenga un directorio llamado directorio.

4.4 Extrae el contenido del archivo archivos.tar.gz.

4.5 Comprime un archivo llamado archivo.txt usando gzip.

4.6 Descomprime el archivo archivo.txt.gz usando gunzip.

4.7 Crea un archivo zip llamado archivos.zip que contenga dos archivos: archivo1.txt y archivo2.txt.

4.8 Extrae el contenido del archivo archivos.zip.

Ejercicio 5: Gestión Avanzada de Archivos y Directorios

5.1 Encuentra todos los archivos .log en tu directorio home y elimínalos.

5.2 Encuentra todos los archivos .txt modificados en los últimos 7 días en tu directorio home.

5.3 Encuentra todos los directorios en tu sistema de archivos que ocupen más de 1 GB.

5.4 Lista los procesos que tienen abierto el archivo /var/log/syslog.

5.5 Monitorea el directorio /home/rafa/proyecto para detectar eventos en tiempo real.

5.6 Verifica el uso del espacio en disco en tu directorio home.

5.7 Verifica el uso del espacio en disco en el sistema de archivos.

5.8 Muestra información detallada del archivo archivo.txt usando stat.

Ejercicios con soluciones de Interacción Avanzada con el Sistema de Archivos en Bash

Ejercicio 1: Enlaces Simbólicos y Duros

1.1 Crea un enlace duro llamado enlace_duro.txt a un archivo llamado archivo.txt.

  • Solución:
ln archivo.txt enlace_duro.txt

1.2 Crea un enlace simbólico llamado enlace_simbólico.txt a un archivo llamado archivo.txt.

  • Solución:
ln -s archivo.txt enlace_simbólico.txt

Ejercicio 2: Sistemas de Archivos Virtuales

2.1 Muestra la información sobre la CPU desde /proc.

  • Solución:
cat /proc/cpuinfo

2.2 Lista todas las interfaces de red disponibles en /sys/class/net.

  • Solución:
ls /sys/class/net

Ejercicio 3: Sincronización de Archivos

3.1 Sincroniza el directorio proyecto desde tu directorio home a /backup.

  • Solución:
rsync -av ~/proyecto /backup

3.2 Sincroniza el directorio proyecto a un servidor remoto usando rsync con compresión.

  • Solución:
rsync -avz ~/proyecto usuario@servidor:/ruta/remota

Ejercicio 4: Compresión y Archivado

4.1 Crea un archivo tar llamado archivos.tar que contenga dos archivos: archivo1.txt y archivo2.txt.

  • Solución:
tar -cvf archivos.tar archivo1.txt archivo2.txt

4.2 Extrae el contenido del archivo archivos.tar.

  • Solución:
tar -xvf archivos.tar

4.3 Crea un archivo tar comprimido con gzip llamado archivos.tar.gz que contenga un directorio llamado directorio.

  • Solución:
tar -czvf archivos.tar.gz directorio

4.4 Extrae el contenido del archivo archivos.tar.gz.

  • Solución:
tar -xzvf archivos.tar.gz

4.5 Comprime un archivo llamado archivo.txt usando gzip.

  • Solución:
gzip archivo.txt

4.6 Descomprime el archivo archivo.txt.gz usando gunzip.

  • Solución:
gunzip archivo.txt.gz

4.7 Crea un archivo zip llamado archivos.zip que contenga dos archivos: archivo1.txt y archivo2.txt.

  • Solución:
zip archivos.zip archivo1.txt archivo2.txt

4.8 Extrae el contenido del archivo archivos.zip.

  • Solución:
unzip archivos.zip

Ejercicio 5: Gestión Avanzada de Archivos y Directorios

5.1 Encuentra todos los archivos .log en tu directorio home y elimínalos.

  • Solución:
find ~/ -name "*.log" -type f -delete

5.2 Encuentra todos los archivos .txt modificados en los últimos 7 días en tu directorio home.

  • Solución:
find ~/ -name "*.txt" -type f -mtime -7

5.3 Encuentra todos los directorios en tu sistema de archivos que ocupen más de 1 GB.

  • Solución:
du -h --max-depth=1 / | grep '[0-9]G'

5.4 Lista los procesos que tienen abierto el archivo /var/log/syslog.

  • Solución:
lsof /var/log/syslog

5.5 Monitorea el directorio /home/rafa/proyecto para detectar eventos en tiempo real.

  • Solución:
inotifywait -m /home/rafa/proyecto

5.6 Verifica el uso del espacio en disco en tu directorio home.

  • Solución:
du -sh ~/

5.7 Verifica el uso del espacio en disco en el sistema de archivos.

  • Solución:
df -h

5.8 Muestra información detallada del archivo archivo.txt usando stat.

  • Solución:
stat archivo.txt