Este artículo explica cómo utilizar el comando du
(disk usage) para determinar cuanto espacio en disco ocupa un directorio (o un listado de directorios) de forma rápida y sencilla.
Como todos sabemos, cuando utilizamos el comando ls
con las opciones -lh
se muestran los tamaños de archivo en disco, por ejemplo:
[root@hal9000 ~]# ls -lh /etc/sysconfig/ | grep net -rw-r--r-- 1 root root 634 Aug 5 10:21 netconsole -rw-r--r--. 1 root root 53 Jun 21 2012 network drwxr-xr-x. 4 root root 4.0K Aug 5 10:21 networking drwxr-xr-x. 2 root root 4.0K Aug 6 09:12 network-scripts -rw------- 1 root root 376 Feb 22 00:03 xinetd
Aunque no muestra el tamaño en disco que ocupa un directorio, o mejor dicho, el tamaño en disco que ocupan recursivamente todos los archivos dentro del directorio.
Para lograr esto es posible utilizar el comando du
, el cual muestra cuánto espacio en disco ocupa cada archivo, y todos los archivos de un directorio, recursivamente. El problema es que la salida por defecto de du
es muy verbosa, ya que lista recursivamente cada directorio. Para directorios que contienen gran cantidad de archivos resulta difícil o incómodo encontrar cual es el espacio total de cada directorio. Es por ello que este comando cuenta con la opción -s
la cual muestra el total para cada entrada.
Por ejemplo, si queremos determinar cuanto espacio en disco ocupa cada directorio dentro de /usr
, podemos utilizar el comando du -hs --total /usr/*
:
[root@hal9000 ~]# du -hs --total /usr/* 339M ./bin 4.0K ./etc 4.0K ./games 67M ./include 123M ./java 402M ./lib 1.6G ./lib64 96M ./libexec 8.4M ./local 16K ./lost+found 50M ./sbin 2.8G ./share 237M ./src 0 ./tmp 5.7G total
Ya que es un comando muy útil es conveniente crear un alias en nuestro archivo .bashrc
para poder utilizar rápidamente:
$ echo 'alias dus="du -hs --total"' >> ~/.bashrc
La próxima vez que iniciamos sesión es posible utilizar el alias "dus":
[root@hal9000 ~]# dus /usr/* 339M /usr/bin 4.0K /usr/etc 4.0K /usr/games 67M /usr/include 123M /usr/java 402M /usr/lib 1.6G /usr/lib64 96M /usr/libexec 8.4M /usr/local 16K /usr/lost+found 50M /usr/sbin 2.8G /usr/share 237M /usr/src 0 /usr/tmp 5.7G total