Hace algún tiempo liberé una extensión para GNOME Shell, con la que podías conocer de un solo vistazo el espacio utilizado en tus diferentes particiones. Se trataba de disk space usage, y tal y como comento en el artículo anterior, para mostrar los datos utilizo la herramienta df. Sin embargo, repasando los artículos que he publicado, he caído en la cuenta, que hasta el momento no le he dedicado ningún artículo, ni a esta herramienta ni a du. Sin embargo, como este es un problema fácilmente subsanable, le voy a dedicar el presente artículo a mostrar el uso y funcionamiento de este par de herramientas. El objeto es poder conocer el espacio usado en Linux desde el terminal, el espacio ocupado de cada una de tus particiones.
Si quieres conocer el espacio utilizado en tus particiones con una interfaz gráfica te recomiendo que utilices Baobab. También para el terminal puedes utilizar una herramienta como ncdu que te permite analizar el espacio del disco duro de forma mas productiva.
Sin embargo, en este artículo, me quiero centrar en du y df, para que de una forma sencilla puedas conocer el espacio usado en Linux.
¿Cual es el espacio usado en Linux?
Como te indicaba en la introducción, el objeto de este artículo es conocer el espacio usado en Linux. El espacio utilizado en cada una de las particiones que tienes montadas. Para este objetivo tienes dos herramientas básicas df y du. Te indico el uso de cada una de ellas con ejemplos, que es como, al menos yo, mejor entiendo las cosas. Además te indicaré como he utilizado estas herramientas en la aplicación disk space usage que he comentado anteriormente.
df para conocer el espacio usado en Linux
df es una herramienta que te muestra el espacio disponible en bloques de 1K por defecto, aunque esto mediante las opcions se puede modificar.
Si lo ejecutas sin argumentos te mostrará el espacio usado en Linux para cada una de las unidades montadas. Así, por ejemplo, en mi caso,
S.ficheros bloques de 1K Usados Disponibles Uso% Montado en
udev 4009612 0 4009612 0% /dev
tmpfs 806800 2104 804696 1% /run
/dev/sda2 50132760 27395940 20160476 58% /
tmpfs 4033996 174972 3859024 5% /dev/shm
tmpfs 5120 4 5116 1% /run/lock
tmpfs 4033996 0 4033996 0% /sys/fs/cgroup
/dev/loop1 15104 15104 0 100% /snap/gnome-characters/296
/dev/loop3 55808 55808 0 100% /snap/core18/1074
/dev/loop2 153600 153600 0 100% /snap/gnome-3-28-1804/67
/dev/sda7 161374080 102190184 50957088 67% /datos
/dev/sda1 632532 8828 623704 2% /boot/efi
tmpfs 806796 112 806684 1% /run/user/1000
Algunas observaciones,
- Solo he dejado tres de los
/dev/loopX
, que se corresponden con los paquetes snap, a modo de ejemplo. En mi caso llegaba a un total de trece. - No tengo separado
/home
de/
. Sin embargo, puedes ver una partición/datos
. Esta partición es donde está parte de mi/home
, mas o menos. Por ejemplo, aquí tengo todo los artículos que publico en la página, los podcasts, las aplicaciones que desarrollo, etc. Igualmente, también guardo la configuración de las aplicaciones, etc. Esto de la configuración, lo explico en el podcast sobre dotfiles
Si ejecutas df seguido de un punto de montaje, por ejemplo, en mi caso /datos
, el resultado será exclusivamente esa línea en concreto. Por ejemplo,
$ df /datos
S.ficheros bloques de 1K Usados Disponibles Uso% Montado en
/dev/sda7 161374080 102190220 50957052 67% /datos
Como ves, esto que te lo muestre en bloques de 1K, realmente no es muy útil, sin embargo, puedes utilizar la opción -h
que te devolverá en unidades que son de fácil lectura, o como dice la ayuda de la herramienta legible para humanos. Por ejemplo,
$ df -h /datos
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/sda7 154G 98G 49G 67% /datos
Esto ya es otra cosa, ¿no es cierto?. Pero aún hay mas. Si lo quieres ver en unidades del sistema internacional (múltiplos de 1000), tienes que utilizar la opción -H
. Por ejemplo,
$ df -h /datos
S.ficheros Tamaño Usados Disp Uso% Montado en
/dev/sda7 166G 105G 53G 67% /datos
Otra interesante opción es ver el espacio total ocupada, no solo por unidad montada, sino también el cómputo total. Para esto utiliza la opción --total
.
$ df -h --total
S.ficheros Tamaño Usados Disp Uso% Montado en
udev 3,9G 0 3,9G 0% /dev
tmpfs 788M 2,1M 786M 1% /run
/dev/sda2 48G 27G 20G 58% /
tmpfs 3,9G 145M 3,8G 4% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
/dev/loop1 15M 15M 0 100% /snap/gnome-characters/296
/dev/loop3 55M 55M 0 100% /snap/core18/1074
/dev/loop2 150M 150M 0 100% /snap/gnome-3-28-1804/67
/dev/sda7 154G 98G 49G 67% /datos
/dev/sda1 618M 8,7M 610M 2% /boot/efi
tmpfs 788M 112K 788M 1% /run/user/1000
total 217G 125G 82G 61% -
En lugar de mostrar bloques, también puedes mostrar inodos. Un inodo contiene la información de un archivo, directorio, enlace simbólico. Para mostrar la cantidad de inodos, tienes que utilizar la opción -i
. Por ejemplo, de nuevo en mi caso,
$df -hi --total
S.ficheros Nodos-i NUsados NLibres NUso% Montado en
udev 979K 658 979K 1% /dev
tmpfs 985K 1,2K 984K 1% /run
/dev/sda2 3,1M 563K 2,6M 18% /
tmpfs 985K 80 985K 1% /dev/shm
tmpfs 985K 5 985K 1% /run/lock
tmpfs 985K 18 985K 1% /sys/fs/cgroup
/dev/loop1 271 271 0 100% /snap/gnome-characters/296
/dev/loop3 9,9K 9,9K 0 100% /snap/core18/1074
/dev/loop2 28K 28K 0 100% /snap/gnome-3-28-1804/67
/dev/sda7 9,8M 1014K 8,8M 11% /datos
/dev/sda1 0 0 0 - /boot/efi
tmpfs 985K 58 985K 1% /run/user/1000
total 19M 1,8M 18M 10% -
Otras opciones interesantes de df
Además de las opciones que has visto hasta el momento, df
viene con algunas otras opciones que en algún momento te pueden ser de utilidad. Así, algunas de estas opciones son las siguientes,
-T
muestra el tipo de sistema de archivos-t
solo muestra aquellos sistemas de archivos que se correspondan con el sistema de archivos indicado. Por ejemplo-t ext4
. Si quieres mostrar varios tipos, solo tienes que añadir la opción-t
tantas veces como necesites. Por ejemplo-t ext3 -t ext4
.-x
es exactamente la opción contraria a la anterior, es decir, excluye aquellos tipos que no queramos mostrar. Al igual que en el caso anterior puedes poner tantas como necesites. Por ejemplo,df -x squashfs -x tmpfs -x devtmpfs -T
. Por ejemplo,--sync
invova async
antes de obtener información del uso.-l
se limita a mostrar información de las unidades locales.-B
te permite definir el tamaño del bloque. Anteriormente he comentado que por defectoes de 1 K. Con esta opción lo puedes definir del tamaño que consideres.
$ df -x squashfs -x tmpfs -x devtmpfs -T -h --total
S.ficheros Tipo Tamaño Usados Disp Uso% Montado en
/dev/sda2 ext4 48G 27G 20G 58% /
/dev/sda7 ext4 154G 98G 49G 67% /datos
/dev/sda1 vfat 618M 8,7M 610M 2% /boot/efi
total - 203G 124G 69G 65% -
Estas opciones son las que utilizo en la extensión para GNOME Shell disk space usage
.
du para conocer el espacio usado en Linux
Si df
te permite trabajar con unidades montadas en tu equipo, du
te permite trabajar a nivel de archivo o directorio. Básicamente te permite conocer el espacio usado por un conjunto de archivos o directorios. En el caso de directorios además lo hace de forma recursiva.
Esta herramienta, tiene algunas opciones que son realmente interesantes. Por ejemplo,
-c
te muestra el total-h
al igual que sucedía condf
, te devuelve la medición, en unidades que sean legibles.-s
muestra única y exclusivamente el total.-d N
en el caso de directorios inspecciona hasta ese nivel de profundidad.
Algunos ejemplos,
$ du -h /home/lorenzo/.local/bin/
96M /home/lorenzo/.local/bin/Telegram
156M /home/lorenzo/.local/bin/
$ du -hc /home/lorenzo/.local/bin/
96M /home/lorenzo/.local/bin/Telegram
156M /home/lorenzo/.local/bin/
156M total
$ du -hs /home/lorenzo/.local/bin/
156M /home/lorenzo/.local/bin/
$ du -hcd1 /home/lorenzo/.local/bin/
96M /home/lorenzo/.local/bin/Telegram
156M /home/lorenzo/.local/bin/
156M total
$ du -hcd0 /home/lorenzo/.local/bin/
156M /home/lorenzo/.local/bin/
156M total
Diferencias
Como ves du
y df
hacen operaciones mas o menos parecidas. Pero, ¿cual es la diferencia? df
consulta en la metainformación del sistema de archivos, mientras que du
lee cada uno de los elementos que existen y lo contabiliza. Esta es la razón por la que df
es significativamente más rápido que du
.
Esto puede llevar a que exista cierta diferencia entre los datos mostrados por uno, y los mostrados por otro. Por ejemplo, en el caso de mi partición de datos, el resultado es el siguiente,
du -s /datos | df /datos |
---|---|
99717220 | 99777736 |
$ du -s /datos
99717220 /datos
$ df /datos
S.ficheros bloques de 1K Usados Disponibles Uso% Montado en
/dev/sda7 161374080 99777736 53369536 66% /datos
Entre otras razones, una que explica esta diferencia reside a que un proceso en ejecución puede mantener un archivo borrado abierto. Esto implica que el espacio reservado se contabiliza por df
y no por du
.
Más información,