La comanda du (disk usage) mostra quant espai de disc ocupen els fitxers i els directoris. Si df et diu que el disc és ple, du et diu què l’omple. Recorre els directoris i suma la mida de tot el que hi ha a dins, subdirectori per subdirectori.
Sintaxi
du [opcions] [fitxer o directori...]
Sense arguments, analitza el directori actual. Sense opcions, mostra cada subdirectori en blocs d’1 KiB, cosa que costa de llegir; per això gairebé sempre es fa servir amb -h i -s o -d.
Opcions més útils
| Opció | Què fa |
|---|---|
-h | Mides llegibles (K, M, G) |
-s | Només el total de cada argument, sense desglossar subdirectoris |
-d N, --max-depth=N | Desglossa fins a N nivells de profunditat |
-a | Mostra també els fitxers, no només els directoris |
-c | Afegeix una línia amb el total general |
-x | No surt del sistema de fitxers (no compta discos muntats a dins) |
--exclude=patró | No compta els fitxers o directoris que coincideixen |
-t mida | Només mostra el que ocupa com a mínim aquesta mida (p. ex. -t 100M) |
--apparent-size | La mida real de les dades, no l’espai que ocupen al disc |
-k, -m | Mides en KiB o MiB |
Exemples
Sense opcions, en KiB i desglossat per subdirectoris (fixa’t que l’ordre és el del recorregut, no alfabètic):
$ du projecte
3060 projecte/src
492 projecte/docs
1200 projecte/.git/pack
1200 projecte/.git
4756 projecte
El mateix, llegible:
$ du -h projecte
3.0M projecte/src
492K projecte/docs
1.2M projecte/.git/pack
1.2M projecte/.git
4.7M projecte
Només el total d’un directori:
$ du -sh projecte
4.7M projecte
Quant ocupa cada element del directori actual, ordenat de més petit a més gran (sort -h entén les unitats K, M, G):
$ du -h -d 1 projecte | sort -h
492K projecte/docs
1.2M projecte/.git
3.0M projecte/src
4.7M projecte
Cada element per separat i un total:
$ du -shc projecte/*
492K projecte/docs
4.0K projecte/LLEGEIX.txt
3.0M projecte/src
3.5M total
Fixa’t que el total és 3,5 M i no 4,7 M: el comodí * del shell no inclou els fitxers i directoris ocults (aquí, .git). du sí que els compta quan li passes el directori sencer.
Fitxers i directoris de més de 1 MiB:
$ du -ah -t 1M projecte
3.0M projecte/src/app.bin
3.0M projecte/src
1.2M projecte/.git/pack/p
1.2M projecte/.git/pack
1.2M projecte/.git
4.7M projecte
Sense comptar un directori:
$ du -sh --exclude=.git projecte
3.5M projecte
Els 10 directoris que més ocupen de /var, sense sortir del disc (amb sudo, perquè hi ha directoris que un usuari normal no pot llegir):
sudo du -xh -d 1 /var | sort -h | tail -10
Mida al disc o mida real
Per defecte, du mostra l’espai que ocupa al disc, que es reserva en blocs (normalment de 4 KiB). Un fitxer de 5 bytes ocupa un bloc sencer:
$ du -h projecte/LLEGEIX.txt
4.0K projecte/LLEGEIX.txt
$ du -h --apparent-size projecte/LLEGEIX.txt
5 projecte/LLEGEIX.txt
La diferència també apareix amb els fitxers dispersos (sparse), com les imatges de màquines virtuals: poden tenir una mida aparent de 50 GB i ocupar-ne molt menys al disc.
Compte amb…
duidfno sempre coincideixen. Si esborres un fitxer gran que algun programa encara té obert (un log, per exemple),duja no el compta peròdfsí, perquè l’espai no s’allibera fins que el programa el tanca. Ho veuràs ambsudo lsof +L1.-ano vol dir «fitxers ocults»: vol dir «mostra també els fitxers, no només els directoris». Els ocults,dusempre els compta.- En directoris enormes tarda: ha de recórrer-ho tot. Per explorar un disc ple, és més còmode
ncdu, que fa el mateix recorregut una vegada i et deixa navegar pels resultats (sudo apt install ncdu).
Comandes relacionades
df: espai lliure i ocupat de cada sistema de fitxers.du -sh dir1: la mida total d’un directori.du -sk * | sort -nridu -h --max-depth=1 | sort: què ocupa més dins d’un directori.find: buscar fitxers grans amb-size.ls -lh: la mida dels fitxers d’un directori.