https://esgeeks.com/?p=3788
Comandos: Cómo liberar espacio en disco en sistemas Linux
5 (100%) 16 votos

Utilice estas ocho utilidades de línea de comandos para reclamar o liberar espacio en disco duro en tus máquinas Linux (Linux Mint / Kali / Ubuntu / Debian / Fedora / Otros).

El sistema operativo Linux es bien conocido por su poderosa funcionalidad de línea de comandos. Como administrador de sistemas, seguramente usted opera unos pocos cientos de servidores Linux y la mayoría de ellos ni siquiera utilizan una interfaz gráfica de usuario como KDE o Gnome. El mantenimiento de los servidores requiere un amplio conocimiento de varios comandos útiles (aunque complejos) para mantenerlos sanos.

El espacio en disco es frecuentemente un dolor de cabeza con sistemas que almacenan y escriben una gran cantidad de datos (algunos útiles y otros no). Mientras que QDirStat, GdMap, xdiskusage y Disk Usage Analyzer de Gnome son todos ejemplos útiles de utilidades basadas en gráficos para medir el uso de espacio en disco, tengo un kit de herramientas de comandos que uso desde la línea de comandos y es seguro decir que son indispensables para mi. A continuación, te dejo mis ejemplos favoritos.

Tenga en cuenta que estos ejemplos se ejecutan en una máquina virtual Ubuntu Linux (pero deberían ser suficientes si se encuentra en una distribución diferente) y debe tener acceso a sudo para ejecutarlos como root y así obtener la máxima eficacia.

1. df

Este es el comando más básico de todos; df puede mostrar espacio libre en el disco. Esto es lo que devolverá cuando se ejecute el comando:

df
Comando df Linux

Comando df en Linux

Esto le muestra las estadísticas en bruto con respecto al uso del disco en bytes, pero para hacerlo más “legible para humanos” ejecute df con el modificador -h:

2. df -h

Eso se ve un poco más fácil para los ojos. Mi volumen root es de 59 Gb con 46 Gb de espacio libre.

df -h
Comando df -h en Linux

Comando df -h en Linux

3. df -Th

Al descubrir los problemas de espacio en disco, puede ser importante saber qué tipo de sistema de archivos está tratando para planificar en consecuencia. Por ejemplo, el sistema de archivos ext4 en Linux tiene un tamaño máximo de sistema de archivos de 16 Tb y puede admitir archivos de hasta 2 Tb.

El comando “df -Th” mostrará el mismo resultado que en el comando anterior, pero también incluye los tipos de sistema de archivos:

df -Th
Comando df -Th en Linux

Comando df -Th en Linux

Ahora que ha averiguado cómo podemos calcular el espacio libre, ¿cómo podemos realmente averiguar qué es lo que está usando ese espacio?


4. du -sh *

El comando du es la abreviatura de “disk usage” (uso de disco). En su uso más básico, si simplemente ejecuta “du” en el volumen raíz, le mostrará el tamaño de todos los directorios en tu sistema. Sin embargo, esto puede producir un exceso de información difícil de analizar.

Agregar los modificadores -sh (“s” significa “summarize” (resumir) y de nuevo, “h” significa “human readable format” (formato legible para el ser humano) para ejecutar du -sh * en el volumen raíz producirá un resultado más limpio.

du -sh *
Comando du -sh en Linux

Comando du -sh en Linux

Puede ver fácilmente qué directorios contienen la mayor cantidad de datos; el directorio Descargas contiene 2.0 Gb, los demás directorios no pasan del Mb (pero esto es sólo un ejemplo). Centrémonos en el directorio /Descargas

PODRÍA entrar en /Descargas y volver a ejecutar du -sh * para echar un vistazo al tamaño de los directorios que se encuentran debajo, pero dado que hay muchos subdirectorios de diferentes tamaños, esto puede no ser útil, ya que tendría que volver a ejecutar el mismo comando varias veces. En cambio, puede ejecutar el siguiente comando…

5. du -a /var | sort -nr | head -n 10

Vamos a analizar esta cadena de comando:

  • du es el comando de uso del disco, por supuesto.
  • -a es el modificador para “all”, es decir, para mostrar todos los elementos.
  • /var le dice a du que explore el directorio /var.
  • El carácter de tubería (“|”) envía los resultados al comando sort.
  • sort -nr mostrará los directorios más grandes en la parte superior de la lista.
  • El carácter de tubería (“|”) envía los resultados al comando head.
  • head -n 10 limitará el número de resultados a los diez directorios más grandes.
du -a /var | sort -nr | head -n 10

Cuando ejecuto esto en mi sistema obtengo el siguiente resultado:

Comando du -a var sort -nr head -n 10

Comando du -a var sort -nr head -n 10

Esto me muestra que los elementos más grandes son el directorio /var en sí mismo (obviamente) seguido por /var/cache y /var/cache/apt.

  • Para ejecutar esto en todo el sistema de archivos, simplemente cambie:
du -a /var | sort -nr | head -n 10 

a:

du -a / | sort -nr | head -n 10

Es posible obtener aún más técnico utilizando lo que se conoce como una expresión regular para filtrar los resultados más explícitamente. Echemos un vistazo más de cerca a todo el sistema de archivos.

Es posible obtener resultados aún más técnicos usando lo que se conoce como regex (expresión regular) para filtrar los resultados de manera más explícita. Echemos un vistazo más de cerca a todo el sistema de archivos.

6. du -xh / |grep ‘^\S*[0-9\.]\+G’|sort -rn

Parece muy complicado, pero es fácil de comprender:

  • du es el comando de uso del disco.
  • -x le dice a du que solo verifique este sistema de archivos (hace que el comando se ejecute más rápido) y la h después hace que los resultados tengan formato legible para humanos.
  • El carácter de tubería (“|”) envía los resultados al comando grep.
  • grep busca los resultados usando ^\s*[0-9\.]\+G. La RegExp [0-9\.] mostrará una lista de todos los directorios y subdirectorios que comiencen con (^\S) caracteres que no sean de espacios en blanco (tales como tab, etc.) – solo debe mostrar caracteres alfabéticos (sin caracteres numéricos) y +G mostrará directorios de 1 GB o más.
  • El carácter de tubería (“|”) envía los resultados al comando sort.
  • sort -rn mostrará los directorios más grandes en la parte superior de la lista.
du -xh / |grep '^\S*[0-9\.]\+G'|sort -rn

Cuando ejecuto esto en mi sistema obtengo el siguiente resultado:


Comando du -xh grep '^S[0-9.]+G'sort -rn

Comando du -xh grep ‘^S[0-9.]+G’sort -rn

Esto me permite saber que podría liberar algo de espacio en mi directorio personal, ya que estoy usando 2,1 Gb.

Limpiar directorios es una forma de recuperar espacio, pero puede ser tedioso navegar buscando cualquier archivo grande que pueda encontrar. El comando “find” puede hacer maravillas al identificar exactamente qué archivos ocupan espacio.

7. find / -printf ‘%s %p\n’| sort -nr | head -10

Lo anterior es un excelente comando, ya que me mostrará los diez archivos más grandes del sistema. Nuevamente, vamos a descomponerlo en partes:

  • find es el comando para buscar archivos, obviamente.
  • / es el volumen raíz o root.
  • -printf ‘%s %p\n’ formateará los resultados mostrando el tamaño del archivo en bytes (%s) y el nombre del archivo (%p).
  • El carácter de tubería (“|”) envía los resultados al comando sort.
  • sort -nr mostrará los directorios más grandes en la parte superior de la lista.
  • El carácter de tubería (“|”) envía los resultados al comando head.
  • head -n 10 limitará el número de resultados a los diez directorios más grandes.
find / -printf '%s %p\n'| sort -nr | head -10

Ejecutar esto en mi sistema producirá lo siguiente:

Comando find, printf, sort y head en Linux

Comando find, printf, sort y head en Linux

No necesito nada en el directorio “Descargas“, por lo que estos son objetivos claros para su eliminación.

Mi último ejemplo se vuelve aún más granular:

8. find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

  • find es el comando para buscar archivos, obviamente.
  • / es el volumen raíz.
  • -xdev solo busca en este sistema de archivos.
  • -type f busca archivos.
  • -size +100M solo muestra archivos de más de 100 Mb de tamaño.
  • -exec ls -la {} \; ejecuta el comando ls para mostrar todos los archivos con el formato de listado largo.
  • El carácter de tubería (“|”) envía los resultados al comando sort.
  • sort -nk 5 mostrará los archivos más grandes en la parte inferior de la lista.
find / -xdev -type f -size +100M -exec ls -la {} \; | sort -nk 5

Cuando ejecuto esto en mi sistema produce los siguientes resultados:

Comandos find ,type, exec, sort en Linux

Comandos find ,type, exec, sort en Linux

Oye, ¿qué archivos puedo eliminar? Depende lo que tengas y lo que utilices, en mi caso veo una ISO de Ubuntu que ya no necesito ¡Eso es, 1.5 Gb que puedo eliminar ahí!

9. Decidir qué limpiar

Encontrar lo que ocupa espacio en tu sistema de archivos es la parte fácil. Averiguar de qué se puede deshacer es más complicado. Encontré algunos ejemplos simples arriba, sin embargo, borrar archivos a ciegas es obviamente un procedimiento extremadamente riesgoso y peligroso. Si encontró archivos grandes de bases de datos y los eliminó, podría producir consecuencias catastróficas.

Todos los sistemas de archivos y sus contenidos variarán, por lo que puede encontrar .log (archivos de registro que son relativamente inofensivos para eliminar), archivos .tar o .tar.gz (archivos comprimidos),. archivos iso (imágenes de disco), documentos, archivos multimedia y más. Verifique las propiedades de los archivos y consulte con las personas responsables antes de eliminar cualquier cosa, y asegúrese de tener una copia de seguridad válida en caso de que necesite deshacer sus esfuerzos.

10. Conclusión

Estos son solo algunos de los muchos comandos potentes (y los modificadores o parámetros de comando que lo acompañan) que puede ejecutar en Linux. Te aconsejo que experimentes, leas las páginas man para df, du y find, y explores opciones similares o incluso más robustas.

Si tienes algún comando que aportar no dudes en comentar y, por favor, comparte con los demás 😉


¡Mantente actualizado!

Suscríbete a nuestro boletín semanal...

Suscríbete a nuestro boletín electrónico para recibir artículos útiles y ofertas especiales. No te perderás absolutamente de nada!

Enviaremos solamente boletines al email y no compartiremos tu email.