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 defind
.- 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