Trabajando con Directorios y Sistemas de Archivos
En este paso, exploraremos cómo usar el comando stat con directorios y sistemas de archivos. Este conocimiento es valioso para las tareas de administración del sistema y la comprensión del uso del almacenamiento.
Comando Stat con Directorios
El comando stat funciona con directorios de la misma manera que funciona con archivos. Creemos un directorio de prueba y examinemos sus metadatos:
mkdir -p ~/project/test_dir
stat ~/project/test_dir
Debería ver una salida similar a la que vimos para los archivos, pero con "directory" (directorio) en lugar de "regular file" (archivo regular) en el campo de tipo de archivo.
La principal diferencia entre archivos y directorios es que los directorios típicamente tienen más enlaces (uno por cada subdirectorio inmediato más dos para el propio directorio y su padre).
Creemos un subdirectorio y veamos cómo afecta al recuento de enlaces:
mkdir -p ~/project/test_dir/sub_dir
stat ~/project/test_dir
Debería notar que el recuento de enlaces ha aumentado en 1.
El comando stat también puede proporcionar información sobre los sistemas de archivos utilizando la opción -f o --file-system. Esta opción muestra detalles como el tipo de sistema de archivos, el tamaño del bloque y las estadísticas de uso.
Examinemos el sistema de archivos que contiene nuestro directorio de proyecto:
stat -f ~/project
La salida debería incluir:
- Tipo de sistema de archivos
- Tamaño del bloque
- Bloques totales
- Bloques libres
- Bloques disponibles (para usuarios no root)
- Inodos totales
- Inodos libres
Esta información es útil para monitorear el uso del espacio en disco y planificar la capacidad.
Combinando Opciones
Podemos combinar la opción del sistema de archivos con la opción de formato personalizado para extraer información específica:
stat -f -c 'File System: %T\nTotal size: %b blocks\nFree: %f blocks\nAvailable: %a blocks' ~/project
Este comando muestra el tipo de sistema de archivos, los bloques totales, los bloques libres y los bloques disponibles.
Siguiendo Enlaces Simbólicos
De forma predeterminada, cuando el comando stat encuentra un enlace simbólico, muestra información sobre el enlace en sí, no sobre el archivo al que apunta. Creemos un enlace simbólico y veamos esto en acción:
echo "Target file content" > ~/project/target_file.txt
ln -s ~/project/target_file.txt ~/project/symlink.txt
stat ~/project/symlink.txt
La salida debería mostrar que el tipo de archivo es "symbolic link" (enlace simbólico) y el tamaño es la longitud de la ruta al archivo de destino.
Para ver información sobre el archivo de destino en lugar del enlace, use la opción -L o --dereference:
stat -L ~/project/symlink.txt
Ahora la salida debería mostrar información sobre el archivo de destino, incluyendo su tamaño y tipo como "regular file" (archivo regular).
Aplicación Práctica: Encontrar Directorios Grandes
Una aplicación práctica del comando stat es encontrar directorios grandes. Creemos un script que calcula los tamaños de los directorios:
echo '#!/bin/bash
for dir in "$@"; do
if [ -d "$dir" ]; then
size=$(du -s "$dir" | cut -f1)
echo "Directory: $dir, Size: $size KB"
else
echo "$dir is not a directory"
fi
done' > ~/project/dir_size.sh
chmod +x ~/project/dir_size.sh
Ahora, ejecutemos el script en nuestro directorio de prueba:
~/project/dir_size.sh ~/project/test_dir
Este script usa el comando du para calcular los tamaños de los directorios, complementando la información de metadatos proporcionada por el comando stat.
Al comprender cómo usar el comando stat con directorios y sistemas de archivos, puede obtener información valiosa sobre la organización y el uso del almacenamiento de su sistema Linux.