Descubre los archivos más grandes del sistema con el comando du

command-duLlevo una temporada viendo como el espacio libre de mi partición raíz en openSUSE Tumbleweed disminuye peligrosamente. Al principio lo atribuía a esa manía de probar todos eses programas que veis pasar por el blog y mi habitual amnesia a la hora de desinstalarlos y eliminar sus dependencias, pero pronto me di cuenta que tenía que haber algo más.

A pesar de tirar de BleachBit en plan root para eliminar archivos temporales y hacer un juicio sumarísimo a journalctl fusilando unos cuantos logs a mano, los bytes okupas no hacían más que crecer… hasta que ayer me puse en serio con el tema y me di cuenta que mi openSUSE como buena rolling release que es, ha desarrollado un amor especial por cada nueva versión del núcleo, guardándose para sí un montón de kernels anteriores.

Ese síndrome de Diógenes de la distro se puede curar en openSUSE activando la purga del kernels en Yast > Administrador de servicios > purge-kernels o si no queremos complicarnos eliminando unos cuantos desde el gestor de software Yast.

Por cierto si queréis saber si tenéis este servicio de “purge” activado podéis ejecutar (hablo de distros con systemd en general):

systemctl status purge-kernels

Bueno! a lo que iba, como os contaba ayer mientras vueltas por dolphin, en busca del archivo gigante perdido y pensando lo bien que me vendría tirar de linea de comandos para localizar a los presuntos culpables, me acordé que tenemos un comando muy cuco llamado du (disk use) que nos proporciona información del tamaño de nuestros archivos y carpetas.

Con esta linea de comando podemos encontrar los 20 archivos más grandes de un directorio determinado (es preciso ejecutarlo como root):

du -ac --time /usr | sort -nr | head -n 20

command-du1Una pequeña explicación de los parámetros:

  • ac: esta combinación muestra todos los archivos y el tamaño total.
  • time: nos es estrictamente necesario, pero nos permite saber cuando fue la última vez que fueron modificados.
  • /usr: es el directorio que he decidido examinar (podríamos poner cualquier otro como /var, /etc, /opt o directamente el directorio raíz)
  • sort -nr: se encarga de ordenarlos
  • head -n 20: nos muestra la salida de los 20 archivos o directorios más grandes.

Puede ser que nos interese excluir algunos tipos de archivos determinados, para ese caso podemos tirar de la opción exclude, en este ejemplo he optado por excluir los archivos rpm en el directorio /var, sería algo así:

du -ac --exclude="*.txt" /var | sort -n -r | head -n 20

Quien dice rpm, dice css, txt, cfg, xz, o cualquier otro tipo de formato de archivo:

du -ac --exclude="*.xz" /var | sort -n -r | head -n 20

Como os comentaba anteriormente para obtener unos resultados completos es conveniente ejecutarlo como root y si queréis más información sobre este comando tan útil, como siempre lo mejor es un vistazo al manual:

man du

6 thoughts on “Descubre los archivos más grandes del sistema con el comando du”

  1. Andrew says:

    Me viene excelente este articulo, aunque yo tengo todo ordenado, instalo/desinstalo paquetes muy seguido, hoy elimine todos los rastros de mis antiguos entornos, que eliminar rastros de gsettings, de .local, eliminando temas antiguos, etc. Una locura para ser la primera limpieza que le hago a Arch.

  2. Solrak Rainbowarrior says:

    Hombre de Réplica!! xD siempre cosas tan útiles…
    Pues yo estaba mosqueado porque mi openSUSE 13.2 eliminaba los viejos kernels y openSUSE 13.1 los conservaba. Yo prefiero conservarlos, dado que alguno puede fallar. Y acabas de darme una solución..

    Lo que pasa es que desde yast veo que esta habilitado pero inactivo, y sin embargo sólo me quedo con el kernel anterior a una actualización cada vez que se actualiza..

    Alguna sugerencia? Lo deshabilito y arreglado?

    Saludos

    1. tannhausser says:

      Aún no tuve tiempo de mirar lo de purgar los kernels (simplemente eliminé los más antiguos en el gestor de software de Yast y dejé un par de ellos por si acaso).

      Pero antes de habilitar/inhabilitar nada, le puedes echar un vistazo al archivo etc/zypp/zypp.conf

      Tiene que haber una linea que ponga:

      multiversion.kernels = latest, running

      o similar tipo:

      multiversion.kernels = latest, latest-1,running

      Como habrás deducido esa línea de código nos marca el número de kernels que se guardan tras cada actualización del núcleo, y a más latest mas kernels 🙂

      1. Solrak Rainbowarrior says:

        Muy interesante, muchas gracias!! Localizada y cambiándola!!

  3. D'Artagnan says:

    Gracias por la información tannhausser, me ha venido muy bien. Toda la basura que queda en SUSE tras tantas actualizaciones, y de instalar desinstalar no es tan fácil de limpiar.

    1. tannhausser says:

      De nada amigo!

      un saludo!

Deja un comentario