Comando du de Linux: Estimación del espacio de archivos

LinuxLinuxBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, exploraremos el comando du (uso de disco) en Linux, una herramienta poderosa para estimar y analizar el uso del espacio en disco. Imagina que eres un administrador de sistemas encargado de gestionar un servidor de archivos en rápido crecimiento. Tu misión es identificar los directorios y archivos que consumen espacio, lo que ayudará a optimizar la utilización del almacenamiento. El comando du será tu herramienta detective confiable en esta investigación del espacio en disco.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/SystemInformationandMonitoringGroup -.-> linux/du("File Space Estimating") subgraph Lab Skills linux/du -.-> lab-219190{{"Comando du de Linux: Estimación del espacio de archivos"}} end

Comprender los conceptos básicos de du

El comando du es tu primera línea de defensa para entender el uso del espacio en disco. Comencemos examinando su funcionalidad básica.

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

cd ~/project

Ahora, ejecutemos un comando du básico:

du

Consejo: Los archivos y carpetas se crean aleatoriamente, y sus tamaños también son aleatorios, por lo que los resultados pueden variar cada vez que lo ejecutes.

Verás 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 piezas de información:

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

Los números pueden parecer crípticos al principio. Representan el uso del disco en kilobytes (KB). Pero no te preocupes, ¡podemos hacerlos más legibles!

Ejecutemos el comando con la opción -h (legible para humanos):

du -h

Ahora verás 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 los humanos (K para kilobytes, M para megabytes, etc.). Esto hace que sea mucho más fácil para nosotros los humanos entenderlo a simple vista.

Algunas cosas a tener en cuenta:

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

Investigar directorios específicos

Ahora que entendemos los conceptos básicos, profundicemos en directorios específicos. Nos centraremos en el directorio logs, que parece estar utilizando una cantidad significativa de espacio.

Primero, cambiemos al directorio de registros:

cd ~/project/logs

Ahora, usemos du para examinar este directorio:

du -h

Puedes ver una salida como esta:

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

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

Podemos usar la opción --max-depth para limitar hasta qué nivel du examina la estructura del directorio:

du -h --max-depth=0

Esto mostrará solo el total del directorio actual:

5.0M   .

--max-depth=0 le dice a du que solo muestre el directorio actual, sin entrar en ningún subdirectorio.

Para ver solo los subdirectorios inmediatos, usa --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 utilizando más espacio.

La opción --max-depth es especialmente útil cuando estás trabajando con estructuras de directorios profundamente anidadas y quieres centrarte en un nivel específico de la jerarquía.

Ordenar y analizar el uso del disco

Ahora que hemos identificado los subdirectorios que utilizan más espacio, aprendamos cómo ordenar los resultados. Esto nos ayudará a identificar rápidamente los mayores consumidores de espacio en disco.

Usaremos el comando sort en combinación con du. No te preocupes si no estás familiarizado con sort; explicaremos cómo funciona.

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

du -h | sort -h

Este comando hace dos cosas:

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

Puedes ver una salida como esta:

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

La salida está ordenada de menor a mayor. Pero a menudo, estamos más interesados en los directorios más grandes primero. Para invertir el orden, podemos agregar 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 de registros están utilizando más espacio, en orden descendente.

Para centrarnos solo en los subdirectorios inmediatos y ordenarlos, podemos combinar las técnicas que hemos aprendido:

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

Este comando mostrará y ordenará solo los subdirectorios inmediatos del directorio actual.

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

Encontrar los archivos más grandes

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

Usaremos el comando find junto con du. No te preocupes si no estás familiarizado con find; explicaremos cómo funciona.

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, pero analicémoslo paso a paso:

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

Puedes ver una salida como 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 tamaños.

Para centrarnos en archivos mayores que un tamaño específico, podemos modificar nuestro comando. Encontremos archivos mayores que 1MB:

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

Este comando agrega -size +1M para filtrar archivos mayores que 1 megabyte.

Estos comandos son increíblemente útiles cuando intentas liberar espacio en disco. Te permiten identificar rápidamente los archivos más grandes, que a menudo son los mejores candidatos para eliminar o archivar.

Generar un informe de uso de disco

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

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

cd ~/project

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

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

Analicemos este comando:

  1. du -h --max-depth=2: Muestra el uso de disco hasta dos niveles de profundidad en un formato legible para humanos.
  2. sort -hr: Ordena los resultados por tamaño en orden inverso (los más grandes primero).
  3. > disk_usage_report.txt: Guarda la salida en un archivo llamado disk_usage_report.txt. El > se llama operador de redirección; toma la salida que normalmente se mostraría en la pantalla y la "redirige" a un archivo en su lugar.

Ahora que hemos creado nuestro informe, veamos su contenido:

cat disk_usage_report.txt

Deberías 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 entradas principales:

head -n 10 disk_usage_report.txt

Esto mostrará los 10 directorios más grandes de tu proyecto.

Este informe es una herramienta valiosa para identificar qué áreas de tu proyecto están consumiendo más espacio en disco. Puede ayudarte a orientar tus esfuerzos en la optimización del uso del almacenamiento o en las discusiones con tu equipo sobre la asignación de recursos.

Resumen

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

  1. Usar el comando básico du para estimar el uso del 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 del disco
  5. Encontrar los archivos más grandes en un directorio
  6. Generar informes completos de uso del disco

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

Otras opciones de du no cubiertas en este laboratorio incluyen:

  • -s: Mostrar solo un total para cada argumento
  • -c: Producir un total general
  • -a: Mostrar el uso del disco para archivos y directorios
  • --time: Mostrar la fecha de última modificación de cada directorio
  • --exclude=PATTERN: Excluir archivos o directorios que coincidan con el PATRON (patrón)