Al administrar el espacio en disco en sistemas Linux, existen varias herramientas de línea de comandos que pueden ayudarte a analizar el uso del almacenamiento y encontrar áreas para optimizar. En este artículo, veremos cómo usar estos comandos para entender y gestionar tu espacio en disco en Linux.
Puntos Clave
- El comando 'df' muestra el espacio de almacenamiento total y disponible en cada disco conectado al sistema
- 'df -H' muestra la salida en un formato fácil de leer (MB, GB, TB)
- Personaliza la salida de 'df' con la opción '--output' seguida de nombres de campos (por ejemplo, source, size, used, avail)
- El comando 'du' informa los tamaños de directorios y archivos
- Combina 'du' con 'sort' y 'head' para encontrar los directorios más grandes (por ejemplo, 'du -a . | sort -n -r | head -n 10')
Comando df
Descripción del comando 'df'
El comando 'df', que significa "disk filesystem" (sistema de archivos del disco), es una herramienta para verificar el uso del espacio en disco en sistemas Linux. Muestra información sobre el espacio de almacenamiento total y disponible en cada disco conectado al sistema, incluyendo unidades locales y sistemas de archivos de red. Este comando ha sido utilizado por usuarios de Linux para analizar la utilización del espacio en disco desde los primeros días del sistema operativo en la década de 1990.
Uso básico de 'df'
Para usar 'df', ejecuta el comando con la opción '-H', así: df -H. Esto muestra la salida en un formato fácil de leer, mostrando los tamaños del espacio en disco en megabytes, gigabytes o terabytes. La salida incluye varias columnas de información para cada sistema de archivos:
| Columna | Descripción |
|---|---|
| Filesystem | El nombre del sistema de archivos o ruta del dispositivo |
| Size | El tamaño total del sistema de archivos |
| Used | La cantidad de espacio utilizado en el sistema de archivos |
| Available | El espacio libre restante en el sistema de archivos |
| Use% | El porcentaje del sistema de archivos que está ocupado |
| Mounted on | El punto de montaje donde está conectado el sistema de archivos |
Por ejemplo, para verificar cuánto espacio queda en tu unidad de sistema principal, que generalmente está montada en '/', ejecuta:
df -H /
Esto podría mostrar algo como:
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 100G 65G 35G 65% /
Para ver información sobre un disco o partición específica, incluye la ruta del dispositivo como argumento de 'df'. Por ejemplo, df -H /dev/sda1 muestra el uso del espacio para la primera partición en la unidad SATA principal.
Personalización de la salida de 'df'
Por defecto, 'df' incluye un conjunto de columnas en su salida. Puedes personalizar esto usando la opción '--output' seguida de una lista separada por comas de nombres de campos. Algunos campos útiles son:
- source: el dispositivo de origen del sistema de archivos
- size: tamaño total del sistema de archivos
- used: cantidad de espacio utilizado
- avail: cantidad de espacio disponible
- pcent: porcentaje de espacio utilizado
Por ejemplo, para crear un informe que muestre el dispositivo, tamaño total, espacio usado y espacio disponible, ejecuta:
df -H --output=source,size,used,avail
Esto imprime una tabla con las columnas seleccionadas:
Filesystem Size Used Avail
/dev/sda1 100G 65G 35G
/dev/sda2 500G 100G 400G
Comando du
¿Qué es el comando 'du'?
El comando du, abreviatura de "disk usage" (uso del disco), es una utilidad de Linux que informa los tamaños de directorios y archivos. A diferencia del comando df que proporciona una vista de alto nivel de la utilización del disco por sistema de archivos, du te permite ver el espacio utilizado por directorios y archivos específicos. Esto lo hace útil para encontrar qué subdirectorios y archivos están usando la mayor parte del espacio en disco en tu sistema Linux.
Cómo usar 'du'
Para usar du, proporciona el directorio que deseas analizar como argumento:
du /home/user/Documents
Esto muestra una lista de todos los subdirectorios en /home/user/Documents, junto con el espacio en disco que usa cada uno. Por defecto, los tamaños se muestran en kilobytes.
Para que la salida sea más fácil de leer, usa la opción -h para mostrar los tamaños en formato fácil de leer (KB, MB o GB), y la opción -s para mostrar solo un resumen del directorio:
du -sh /home/user/Documents
Esto podría mostrar algo como:
25G /home/user/Documents
Mostrando que el directorio /home/user/Documents y su contenido usan 25 gigabytes de espacio en disco en total.
También puedes usar du en archivos individuales para ver su uso del disco:
du -h /home/user/Documents/large-file.zip
Por ejemplo, si tienes un archivo de video grande en tu carpeta Documents, podrías ejecutar:
du -h /home/user/Documents/vacation-video.mp4
Y obtener una salida como:
2.3G /home/user/Documents/vacation-video.mp4
Mostrando que el archivo de video ocupa 2.3 gigabytes de espacio.
Encontrar los directorios más grandes con 'du'
Un uso común de du es encontrar directorios que están usando la mayor parte del espacio en disco. Aunque podrías revisar la salida manualmente para encontrar los subdirectorios más grandes, es más fácil combinar du con otros comandos para ordenar los resultados.
Para listar los 10 subdirectorios principales en el directorio actual por tamaño, ejecuta:
du -a . | sort -n -r | head -n 10
Esto es lo que hace cada parte del comando:
du -a .: Calcula el uso del disco de todos los archivos y subdirectorios en el directorio actual (.). La opción-aincluye archivos además de directorios.sort -n -r: Ordena la salida dedunuméricamente (-n) en orden inverso (-r), por lo que los números más grandes aparecen primero.head -n 10: Toma las primeras 10 líneas de la salida ordenada.
El comando completo te da una lista de los 10 subdirectorios y archivos más grandes, que luego puedes examinar más a fondo para ver si se puede recuperar espacio.
También puedes especificar un directorio diferente desde donde empezar:
du -a /home/user/Documents | sort -n -r | head -n 10
Esto encuentra los 10 principales consumidores de espacio dentro del directorio /home/user/Documents y sus subdirectorios.
Por ejemplo, digamos que tu directorio /home/user/Documents contiene estos subdirectorios:
/home/user/Documents/work
/home/user/Documents/personal
/home/user/Documents/photos
/home/user/Documents/music
Ejecutar el comando anterior podría mostrar algo como:
45G /home/user/Documents/photos
30G /home/user/Documents/music
10G /home/user/Documents/work
5G /home/user/Documents/personal
Mostrando que los subdirectorios photos y music están usando la mayor parte del espacio.
Comando stat
El comando stat muestra información sobre un archivo, directorio o sistema de archivos, incluyendo su tamaño, tamaño de bloque y uso del disco.
Para usar stat, especifica la ruta al archivo, directorio o dispositivo que deseas analizar. Por ejemplo:
stat /home/user/Documents/file1.txt
Esto mostrará información sobre file1.txt:
File: /home/user/Documents/file1.txt
Size: 4096 Blocks: 8 IO Block: 4096 regular file
Device: 10301h/66049d Inode: 1234567 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 1000/ user) Gid: ( 1000/ user)
Access: 2023-04-20 10:30:00.000000000 +0200
Modify: 2023-04-20 10:30:00.000000000 +0200
Change: 2023-04-20 10:30:00.000000000 +0200
Birth: -
De esta salida, puedes ver el tamaño del archivo (4096 bytes), el número de bloques que ocupa en el disco (8), y otros metadatos como permisos, propiedad y marcas de tiempo.
También puedes usar stat en un directorio o sistema de archivos. Por ejemplo:
stat /home/user/Documents
Esto mostrará el tamaño y uso del disco del directorio /home/user/Documents, con otra información.
Los escenarios donde stat puede ser útil incluyen:
- Analizar el uso del disco de un archivo o directorio específico para identificar ineficiencias de almacenamiento
- Verificar permisos y propiedad de archivos para solucionar problemas de acceso
- Examinar marcas de tiempo de archivos para determinar cuándo se modificó o accedió por última vez a un archivo
Ejemplo: Verificación de Permisos y Propiedad de Archivos
Para verificar los permisos y propiedad de un archivo, puedes usar stat:
stat /home/user/Documents/important_file.txt
La salida incluirá los permisos y propiedad del archivo:
Access: (0640/-rw-r-----) Uid: ( 1000/ user) Gid: ( 1000/ user)
En este caso, el archivo tiene permisos de lectura y escritura para el propietario (user), permisos de lectura para el grupo (user), y ningún permiso para otros. El propietario y grupo son ambos "user" con UID 1000 y GID 1000.
Si los permisos o propiedad son incorrectos, puedes usar chmod y chown para ajustarlos:
chmod 0644 /home/user/Documents/important_file.txt
chown user:group /home/user/Documents/important_file.txt
Esto establece los permisos a -rw-r--r-- (lectura y escritura para el propietario, lectura para grupo y otros) y cambia el propietario a "user" y el grupo a "group".
Comando fdisk -l
El comando fdisk -l se usa para mostrar información sobre particiones de disco y sus tamaños. Lista las tablas de particiones para todos los dispositivos de almacenamiento conectados al sistema y muestra la disposición del disco.
Ejecutar fdisk -l como root (o con sudo) mostrará información sobre cada disco y sus particiones:
Disk /dev/sda: 50 GiB, 53687091200 bytes, 104857600 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: A1B2C3D4-E5F6-G7H8-I9J0-K1L2M3N4O5P6
Device Start End Sectors Size Type
/dev/sda1 2048 206847 204800 100M EFI System
/dev/sda2 206848 2303999 2097152 1G Linux filesystem
/dev/sda3 2304000 31457279 29153280 14G Linux filesystem
Esta salida muestra que /dev/sda tiene un tamaño total de 50 GiB y contiene tres particiones: una partición de sistema EFI de 100 MB, una partición de sistema de archivos Linux de 1 GB y una partición de sistema de archivos Linux de 14 GB.
El comando fdisk -l es útil para entender la estructura de tus dispositivos de almacenamiento y los tamaños de las particiones. Puede ayudar con tareas como:
- Identificar el tamaño total y espacio libre en cada dispositivo de almacenamiento
- Determinar la disposición y tamaños de las particiones al planificar una nueva instalación o reparticionamiento
- Verificar que las particiones estén configuradas correctamente y alineadas con el dispositivo de almacenamiento
Ejemplo: Identificación del Tamaño Total del Disco y Espacio Libre
Para verificar rápidamente el tamaño total y espacio libre de un disco, puedes combinar fdisk -l con grep y awk:
sudo fdisk -l /dev/sda | grep -e "Disk /dev/sda" -e "^$" | awk '{print $3 " " $4}'
Este comando extrae las líneas relevantes de la salida de fdisk -l y muestra el tamaño total del disco y la unidad:
50 GiB
Para calcular el espacio libre, resta el espacio usado (suma de los tamaños de las particiones) del tamaño total del disco. Puedes automatizar esto con un script:
#!/bin/bash
disk="/dev/sda"
total_size=$(sudo fdisk -l $disk | grep "Disk $disk" | awk '{print $3}')
used_space=$(sudo fdisk -l $disk | awk '/^\/dev/ {sum += $5} END {print sum}')
free_space=$((total_size - used_space))
echo "Total size: $total_size bytes"
echo "Used space: $used_space bytes"
echo "Free space: $free_space bytes"
Este script calcula el tamaño total del disco, suma los tamaños de las particiones para obtener el espacio usado, y resta el espacio usado del tamaño total para determinar el espacio libre. La salida se verá así:
Total size: 53687091200 bytes
Used space: 15728640000 bytes
Free space: 37958451200 bytes
Esto te ayuda a evaluar rápidamente el espacio libre en un disco sin tener que calcularlo manualmente a partir de los tamaños de las particiones.
Combinación de Comandos para Análisis Detallado
Ordenar Archivos y Directorios por Tamaño
Puedes combinar el comando du con sort para listar archivos y directoriosordenados por su uso del disco. Esto es útil para encontrar los archivos y directorios más grandes.
Por ejemplo, para ordenar el contenido de tu directorio Desktop por tamaño de mayor a menor, ejecuta:
du -h /home/user/Desktop | sort -rn
La opción -h hace que la salida sea fácil de leer, mientras que sort -rn ordena los resultados numéricamente (-n) en orden inverso (-r).
Si solo quieres ver los resultados más grandes o más pequeños, puedes canalizar la salida a head o tail:
| Comando | Descripción |
|---|---|
du -h /home/user/Desktop \| sort -rn \| head -n 5 |
Ver los 5 archivos/directorios más grandes en tu Desktop |
du -h /home/user/Desktop \| sort -rn \| tail -n 5 |
Ver los 5 archivos/directorios más pequeños en tu Desktop |
Aquí hay un ejemplo de cómo podría verse la salida al encontrar los 5 elementos más grandes:
4.0G /home/user/Desktop/videos
1.5G /home/user/Desktop/images
1.0G /home/user/Desktop/project.zip
500M /home/user/Desktop/music
100M /home/user/Desktop/documents
Esto muestra que el directorio videos está ocupando la mayor parte del espacio con 4.0 gigabytes, seguido de images con 1.5 gigabytes, y así sucesivamente.
Filtrar Resultados por Tamaño
Para encontrar archivos que son más grandes que un cierto tamaño, puedes combinar du con grep. El comando grep busca líneas que coincidan con un patrón.
Para encontrar archivos en tu directorio Desktop que sean más grandes de 1 gigabyte, ejecuta:
du -h /home/user/Desktop | grep '^\s*[0-9\.]\+G'
Esto busca líneas que comienzan con (^) algún espacio en blanco (\s*), seguido de uno o más (+) dígitos o puntos ([0-9\.]), y terminan con una G (para gigabytes).
Puedes cambiar la G a M para encontrar archivos más grandes que un megabyte, o K para kilobytes:
# Encontrar archivos más grandes de 100 megabytes
du -h /home/user/Desktop | grep '^\s*[0-9\.]\+M'
# Encontrar archivos más grandes de 10 kilobytes
du -h /home/user/Desktop | grep '^\s*[0-9\.]\+K'
Por ejemplo, si ejecutas el comando para encontrar archivos más grandes de 100 megabytes, podrías ver una salida como esta:
200M /home/user/Desktop/presentation.ppt
150M /home/user/Desktop/archive.tar.gz
120M /home/user/Desktop/video.mp4
Esta técnica es útil cuando necesitas encontrar archivos grandes que podrían estar ocupando demasiado espacio en disco.
Excluir Archivos por Tipo
Al analizar el uso del disco, es posible que desees excluir ciertos tipos de archivos de los resultados. El comando du tiene una opción --exclude que te permite omitir archivos que coincidan con un patrón.
Por ejemplo, para obtener el uso del disco de tu directorio Desktop excluyendo archivos de texto, ejecuta:
du -h /home/user/Desktop --exclude="*.txt"
Esto calculará los tamaños de todos los archivos y subdirectorios como de costumbre, pero omitirá cualquier archivo que termine en .txt.
du -h /home/user/Desktop --exclude={"*.txt","*.jpg","*.png"}
Ambos comandos analizarán el uso del disco omitiendo archivos de texto, JPEG y PNG.
Usar --exclude es útil cuando estás tratando de encontrar archivos grandes para limpiar, pero sabes que ciertos tipos de archivos se supone que están ahí y no necesitan ser contados. Por ejemplo, si tienes una gran colección de fotos, puedes excluir archivos de imagen para concentrarte en otros tipos de archivos que podrían estar ocupando espacio innecesariamente.
Casos de Uso Prácticos
Aquí hay algunas situaciones de la vida real donde combinar du con otros comandos puede ser beneficioso:
-
Liberar espacio en disco: Cuando tu disco duro tiene poco almacenamiento, puedes usar
du -h | sort -rn | headpara identificar los directorios y archivos más grandes. Esto te ayuda a decidir qué eliminar o mover a otra unidad para liberar espacio. -
Prepararse para una migración del sistema: Antes de migrar tus datos a una nueva computadora o unidad, es buena idea verificar tu uso de almacenamiento actual. Comandos como
du -h --exclude="*.bak" --exclude="*.tmp"te permiten obtener una imagen precisa del tamaño de tus datos excluyendo archivos temporales o de respaldo que no necesitan ser transferidos. -
Solucionar problemas de rendimiento: Si tu sistema está lento o ciertos procesos están tardando mucho tiempo, podría ser porque están procesando archivos muy grandes. Usar
du -h | grep '^\s*[0-9\.]\+G'puede ayudarte a detectar archivos grandes que podrían estar causando problemas de rendimiento.
Comando ls -al
El comando ls -al lista el contenido de un directorio, incluyendo archivos ocultos, y muestra sus tamaños con otra información. Es útil para analizar el uso del disco de archivos específicos dentro de un directorio.
Por ejemplo, ejecutar ls -al en el directorio /home/user/Documents puede mostrar una salida como:
total 24
drwxr-xr-x 2 user user 4096 Apr 20 10:30 .
drwxr-xr-x 5 user user 4096 Apr 19 09:15 ..
-rw-r--r-- 1 user user 4096 Apr 20 10:30 file1.txt
-rw-r--r-- 1 user user 8192 Apr 20 10:15 file2.txt
drwxr-xr-x 2 user user 4096 Apr 19 15:45 subdirectory
Aquí, ls -al proporciona un listado del directorio, mostrando permisos de archivos, propiedad, fechas de modificación y tamaños. Este comando ayuda cuando necesitas analizar el uso del disco de archivos individuales dentro de un directorio.
Algunos casos de uso para ls -al incluyen:
- Encontrar archivos grandes que están ocupando espacio en disco
- Verificar permisos y propiedad de archivos para garantizar el control de acceso
- Comparar fechas de modificación de archivos para ver qué archivos se han actualizado recientemente
Ejemplo: Encontrar Archivos Grandes
Para encontrar archivos grandes en un directorio, puedes combinar ls -al con sort y head:
ls -al /home/user/Documents | sort -k 5 -n -r | head -n 5
Este comando lista el contenido de /home/user/Documents, ordena la salida por la quinta columna (tamaño del archivo) en orden numérico inverso y muestra los 5 resultados principales. La salida mostrará los archivos más grandes en el directorio:
-rw-r--r-- 1 user user 1048576 Apr 20 11:00 large_file1.bin
-rw-r--r-- 1 user user 524288 Apr 20 10:45 large_file2.bin
-rw-r--r-- 1 user user 262144 Apr 20 10:30 large_file3.bin
-rw-r--r-- 1 user user 131072 Apr 20 10:15 large_file4.bin
-rw-r--r-- 1 user user 65536 Apr 20 10:00 large_file5.bin
Esto te ayuda a identificar rápidamente los archivos más grandes que pueden estar consumiendo espacio en disco.





