duf es una herramienta que ofrece un reemplazo visualmente más amigable para el comando df -h, que además incorpora algunas funcionalidades adicionales interesantes.

Al momento de determinar el uso de disco típicamente se recurre al comando df- h:

root@vaio:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            5.9G     0  5.9G   0% /dev
tmpfs           1.2G  2.0M  1.2G   1% /run
/dev/sda7        60G   30G   31G  50% /
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           2.4G   75M  2.3G   4% /dev/shm
/dev/sda1       1.9G  104M  1.7G   6% /boot
/dev/sda4        40G   37G  3.8G  91% /System
/dev/sda5       191G  169G   23G  89% /data
/dev/sda6       173G  166G  6.7G  97% /vault
none            5.9G     0  5.9G   0% /run/user/1000
none            5.9G     0  5.9G   0% /run/user/0

duf es una alternativa escrita en lenguaje Go y liberada bajo licencia MIT, disponible para sistemas operativos Linux, BSD y macOS, que ofrece una funcionalidad similar, aunque más amigable visualmente.

Entre sus características ofrece una salida en colores, se ajusta al ancho de la ventana e incluso permite retornar la salida en formato JSON.

En la página del proyecto en Github se ofrecen paquetes para Linux (Debian, Red Hat y genérico para diferentes arquitecturas), FreeBSD y macOS.

Para instalar duf en Debian/Devuan y derivados, descargar la última versión disponible desde la página de releases:

# wget https://github.com/muesli/duf/releases/download/v0.3.1/duf_0.3.1_linux_amd64.deb

Luego instalar el paquete con dpkg:

# dpkg -i duf_0.3.1_linux_amd64.deb

Una vez instalado, simplemente ejecutar duf:

Se observa que la salida en colores permite identificar rápidamente aquellos discos o particiones con mayor uso.

Las opción --inodes permite listar el uso de inodos y --hide-special oculta los dispositivos especiales:

root@linuxito:~# duf --inodes --hide-special
╭──────────────────────────────────────────────────────────────────────╮
│ 1 local device                                                       │
├────────────┬─────────┬────────┬─────────┬────────┬──────┬────────────┤
│ MOUNTED ON │  INODES │   USED │   AVAIL │  USE%  │ TYPE │ FILESYSTEM │
├────────────┼─────────┼────────┼─────────┼────────┼──────┼────────────┤
│ /          │ 3276800 │ 160539 │ 3116261 │   4.9% │ ext4 │ /dev/vda1  │
╰────────────┴─────────┴────────┴─────────┴────────┴──────┴────────────╯

La opción --json vuelca la salida en formato JSON, lo cual puede ser de gran utilidad para pasar la información a otro programa o servicio:

root@linuxito:~# duf --json
[
 {
  "device": "sysfs",
  "device_type": "special",
  "mount_point": "/sys",
  "fs_type": "sysfs",
  "type": "sysfs",
  "opts": "rw,nosuid,nodev,noexec,relatime",
  "total": 0,
  "free": 0,
  "used": 0,
  "inodes": 0,
  "inodes_free": 0,
  "inodes_used": 0,
  "blocks": 0,
  "block_size": 4096
 },
 {
  "device": "proc",
  "device_type": "special",
  "mount_point": "/proc",
  "fs_type": "proc",
  "type": "proc",
  "opts": "rw,nosuid,nodev,noexec,relatime",
  "total": 0,
  "free": 0,
  "used": 0,
  "inodes": 0,
  "inodes_free": 0,
  "inodes_used": 0,
  "blocks": 0,
  "block_size": 4096
 },
 {
  "device": "udev",
  "device_type": "special",
  "mount_point": "/dev",
  "fs_type": "devtmpfs",
  "type": "tmpfs",
  "opts": "rw,nosuid,relatime",
  "total": 1038692352,
  "free": 1038692352,
  "used": 0,
  "inodes": 253587,
  "inodes_free": 253307,
  "inodes_used": 280,
  "blocks": 253587,
  "block_size": 4096
 },
 {
  "device": "devpts",
  "device_type": "special",
  "mount_point": "/dev/pts",
  "fs_type": "devpts",
  "type": "devpts",
  "opts": "rw,nosuid,noexec,relatime",
  "total": 0,
  "free": 0,
  "used": 0,
  "inodes": 0,
  "inodes_free": 0,
  "inodes_used": 0,
  "blocks": 0,
  "block_size": 4096
 },
 {
  "device": "tmpfs",
  "device_type": "special",
  "mount_point": "/run",
  "fs_type": "tmpfs",
  "type": "tmpfs",
  "opts": "rw,nosuid,noexec,relatime",
  "total": 209457152,
  "free": 207462400,
  "used": 1994752,
  "inodes": 255680,
  "inodes_free": 255275,
  "inodes_used": 405,
  "blocks": 51137,
  "block_size": 4096
 },
 {
  "device": "/dev/vda1",
  "device_type": "local",
  "mount_point": "/",
  "fs_type": "ext4",
  "type": "ext2/ext3",
  "opts": "rw,relatime",
  "total": 52809904128,
  "free": 33645723648,
  "used": 16978632704,
  "inodes": 3276800,
  "inodes_free": 3116249,
  "inodes_used": 160551,
  "blocks": 12893043,
  "block_size": 4096
 },
 {
  "device": "tmpfs",
  "device_type": "special",
  "mount_point": "/run/lock",
  "fs_type": "tmpfs",
  "type": "tmpfs",
  "opts": "rw,nosuid,nodev,noexec,relatime",
  "total": 5242880,
  "free": 5242880,
  "used": 0,
  "inodes": 255680,
  "inodes_free": 255677,
  "inodes_used": 3,
  "blocks": 1280,
  "block_size": 4096
 },
 {
  "device": "pstore",
  "device_type": "special",
  "mount_point": "/sys/fs/pstore",
  "fs_type": "pstore",
  "type": "pstorefs",
  "opts": "rw,relatime",
  "total": 0,
  "free": 0,
  "used": 0,
  "inodes": 0,
  "inodes_free": 0,
  "inodes_used": 0,
  "blocks": 0,
  "block_size": 4096
 },
 {
  "device": "tmpfs",
  "device_type": "special",
  "mount_point": "/dev/shm",
  "fs_type": "tmpfs",
  "type": "tmpfs",
  "opts": "rw,nosuid,nodev,noexec,relatime",
  "total": 418897920,
  "free": 418897920,
  "used": 0,
  "inodes": 255680,
  "inodes_free": 255678,
  "inodes_used": 2,
  "blocks": 102270,
  "block_size": 4096
 },
 {
  "device": "securityfs",
  "device_type": "special",
  "mount_point": "/sys/kernel/security",
  "fs_type": "securityfs",
  "type": "securityfs",
  "opts": "rw,relatime",
  "total": 0,
  "free": 0,
  "used": 0,
  "inodes": 0,
  "inodes_free": 0,
  "inodes_used": 0,
  "blocks": 0,
  "block_size": 4096
 }
]

Compartí este artículo