Comando du de Linux: Estimación del Espacio de Archivos

LinuxBeginner
Practicar Ahora

Introducción

En esta práctica de laboratorio, exploraremos el comando du (disk usage) en Linux, una herramienta fundamental para estimar y analizar el uso del espacio en disco. Imagine que es un administrador de sistemas encargado de gestionar un servidor de archivos que crece rápidamente. Su misión es identificar qué directorios y archivos están consumiendo más espacio para optimizar el almacenamiento. El comando du será su herramienta de investigación de confianza en esta tarea.

Esta es una Guía de Laboratorio (Guided Lab), que proporciona instrucciones paso a paso para ayudarle a aprender y practicar. Siga las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 98%. Ha recibido una calificación de reseñas positivas del 100% por parte de los alumnos.

Conceptos Básicos de du

El comando du es su primera línea de defensa para comprender cómo se utiliza el espacio en disco. Comencemos examinando su funcionalidad básica.

Primero, naveguemos al directorio del proyecto donde realizaremos nuestra investigación:

cd ~/project

Ahora, ejecutemos un comando du básico:

du

Consejos: Los archivos y carpetas se crean de forma aleatoria y sus tamaños también lo son, por lo que los resultados pueden variar cada vez que lo ejecute.

Verá una salida similar a esta:

0       ./documents/reports
0       ./documents
10240   ./backups
0       ./logs/archive
0       ./logs/system
5120    ./logs/application
5120    ./logs
15360   .

Cada línea muestra dos datos:

  1. El uso de disco (en KB)
  2. La ruta del directorio correspondiente

Al principio, los números pueden parecer confusos. Representan el uso de disco en kilobytes (KB). ¡Pero no se preocupe, podemos hacer que sean más fáciles de leer!

Ejecutemos el comando con la opción -h (human-readable o lectura humana):

du -h

Ahora verá una salida como esta:

0       ./documents/reports
0       ./documents
10M     ./backups
0       ./logs/archive
0       ./logs/system
5.0M    ./logs/application
5.0M    ./logs
15M     .

La opción -h convierte los tamaños a un formato más amigable para nosotros (K para Kilobytes, M para Megabytes, etc.). Esto facilita mucho la comprensión de un vistazo.

Algunos puntos a tener en cuenta:

  • El punto . al final representa el directorio actual (en este caso, ~/project).
  • El uso de disco de un directorio incluye el uso de todos sus subdirectorios.
  • Los tamaños que vea pueden ser ligeramente diferentes, ya que el script de configuración genera tamaños de archivo aleatorios.

Investigación de Directorios Específicos

Ahora que comprendemos lo básico, profundicemos en directorios específicos. Nos centraremos en el directorio logs, que parece estar ocupando una cantidad significativa de espacio.

Primero, entremos en el directorio de registros:

cd ~/project/logs

Ahora, usemos du para examinar este directorio:

du -h

Es posible que vea una salida como esta:

0       ./archive
0       ./system
5.0M    ./application
5.0M    .

Esto nos da un desglose del uso de disco para cada subdirectorio dentro de logs. Pero, ¿qué pasa si solo queremos ver el total del directorio logs?

Podemos usar la opción --max-depth para limitar qué tanto profundiza du en la estructura de directorios:

du -h --max-depth=0

Esto mostrará únicamente el total del directorio actual:

5.0M    .

El parámetro --max-depth=0 le indica a du que solo muestre el directorio actual, sin entrar en ningún subdirectorio.

Para ver solo los subdirectorios inmediatos, use --max-depth=1:

du -h --max-depth=1

Salida:

0       ./archive
0       ./system
5.0M    ./application
5.0M    .

Esto nos da una imagen más clara de qué subdirectorios están consumiendo más espacio.

La opción --max-depth es particularmente útil cuando se trabaja con estructuras de directorios muy profundas y se desea enfocar el análisis en un nivel específico de la jerarquía.

Clasificación y Análisis del Uso de Disco

Una vez identificados los subdirectorios que más espacio ocupan, aprendamos a ordenar los resultados. Esto nos ayudará a identificar rápidamente los mayores consumidores de almacenamiento.

Utilizaremos el comando sort en combinación con du. No se preocupe si no está familiarizado con sort, explicaremos cómo funciona.

Primero, ordenemos la salida de du por tamaño:

du -h | sort -h

Este comando realiza dos acciones:

  1. du -h: Ejecuta el comando de uso de disco con salida en formato legible.
  2. |: Esto es una tubería (pipe). Toma la salida del comando de la izquierda y la entrega como entrada al comando de la derecha.
  3. sort -h: Ordena la entrada numéricamente basándose en los tamaños legibles para humanos.

Podría ver algo como esto:

0       ./archive
0       ./system
5.0M    .
5.0M    ./application

La salida se ordena de menor a mayor. Sin embargo, a menudo nos interesan primero los directorios más grandes. Para invertir el orden, podemos añadir la opción -r a sort:

du -h | sort -hr

Salida:

5.0M    ./application
5.0M    .
0       ./system
0       ./archive

Ahora podemos ver claramente qué subdirectorios dentro de la carpeta logs están usando más espacio, en orden descendente.

Para enfocarnos solo en los subdirectorios inmediatos y ordenarlos, podemos combinar las técnicas aprendidas:

du -h --max-depth=1 | sort -hr

Este comando mostrará y ordenará únicamente los subdirectorios directos del directorio actual.

Recuerde que el poder de la línea de comandos reside en combinar comandos simples para realizar operaciones complejas. ¡Acabamos de combinar du, sort y varias opciones para analizar rápidamente el uso del disco!

Búsqueda de los Archivos más Grandes

Hasta ahora, hemos analizado el tamaño de los directorios. Pero, ¿qué pasa si queremos encontrar los archivos específicos que ocupan más espacio? El comando du trabaja principalmente con directorios, pero podemos combinarlo con otros comandos para localizar archivos grandes.

Usaremos el comando find junto con du. Si no conoce find, aquí le explicamos su funcionamiento.

Primero, regresemos al directorio del proyecto:

cd ~/project

Ahora, usemos find y du para localizar los archivos más grandes:

find . -type f -exec du -h {} + | sort -hr | head -n 5

Este comando puede parecer complejo, así que vamos a desglosarlo:

  1. find . -type f: Busca todos los archivos (-type f) en el directorio actual (.) y sus subdirectorios.
  2. -exec du -h {} +: Ejecuta du -h en cada archivo encontrado. El símbolo {} se reemplaza por el nombre del archivo, y el + indica a find que pase tantos nombres de archivo como sea posible a cada ejecución de du.
  3. sort -hr: Ordena los resultados por tamaño en orden inverso (el más grande primero).
  4. head -n 5: Muestra solo los primeros 5 resultados.

Verá una salida similar a esta:

10M     ./backups/large_backup.bak
5.0M    ./logs/application/large_app_log.log
0       ./logs/system/placeholder.log
0       ./logs/archive/placeholder.log
0       ./logs/application/placeholder.log

Esta salida nos muestra los cinco archivos más grandes en el directorio del proyecto y sus respectivos tamaños.

Para enfocarnos en archivos que superen un tamaño específico, podemos modificar el comando. Busquemos archivos mayores a 1MB:

find . -type f -size +1M -exec du -h {} + | sort -hr

Este comando añade -size +1M para filtrar únicamente los archivos que superan 1 megabyte.

Estos comandos son increíblemente útiles cuando intenta liberar espacio en disco, ya que le permiten identificar rápidamente los archivos más pesados, que suelen ser los mejores candidatos para ser eliminados o archivados.

Generación de un Informe de Uso de Disco

Como paso final de nuestra investigación, crearemos un informe exhaustivo del uso de disco para todo el directorio del proyecto. Este informe nos ayudará a resumir nuestros hallazgos y presentarlos al equipo.

Primero, asegúrese de estar en el directorio del proyecto:

cd ~/project

Ahora, generemos un informe detallado usando du y guardémoslo en un archivo:

du -h --max-depth=2 | sort -hr > disk_usage_report.txt

Desglosemos este comando:

  1. du -h --max-depth=2: Muestra el uso de disco hasta dos niveles de profundidad en formato legible.
  2. sort -hr: Ordena los resultados por tamaño de forma descendente.
  3. > disk_usage_report.txt: Guarda la salida en un archivo llamado disk_usage_report.txt. El símbolo > es un operador de redirección; toma la salida que normalmente iría a la pantalla y la "redirige" hacia un archivo.

Ahora que hemos creado nuestro informe, veamos su contenido:

cat disk_usage_report.txt

Debería ver una lista completa de directorios y sus tamaños, ordenados de mayor a menor.

Para obtener un resumen de los directorios más grandes, podemos usar el comando head para ver solo las primeras entradas:

head -n 10 disk_usage_report.txt

Esto le mostrará los 10 directorios que más espacio consumen en su proyecto.

Este informe es una herramienta valiosa para identificar qué áreas de su proyecto están agotando el almacenamiento. Puede servir de guía para sus esfuerzos de optimización o para discusiones con su equipo sobre la asignación de recursos.

Resumen

En este laboratorio, hemos explorado el potente comando du y sus aplicaciones en la gestión del espacio en disco. Hemos aprendido a:

  1. Utilizar el comando du básico para estimar el uso de disco.
  2. Hacer que la salida sea legible para humanos con la opción -h.
  3. Investigar directorios específicos y limitar la profundidad con --max-depth.
  4. Ordenar y analizar los resultados del uso de disco.
  5. Encontrar los archivos más grandes en un directorio.
  6. Generar informes detallados de uso de disco.

Estas habilidades son esenciales para cualquier administrador de sistemas o usuario avanzado que gestione recursos de almacenamiento.

Otras opciones de du que no se cubrieron en este laboratorio incluyen:

  • -s: Muestra solo el total de cada argumento.
  • -c: Produce un gran total al final.
  • -a: Muestra el uso de disco tanto de archivos como de directorios.
  • --time: Muestra la hora de la última modificación de cada directorio.
  • --exclude=PATRÓN: Excluye archivos o directorios que coincidan con el PATRÓN.