Espai en disc a Linux

La comanda du -sh a Linux: quant ocupa un directori



La comanda du -sh dir1 et diu quant ocupa en total un directori, amb tot el que conté (subdirectoris inclosos), en un format fàcil de llegir. És la manera més ràpida de respondre la pregunta «quant pesa aquesta carpeta?» des del terminal.

Peça a peça

du -sh dir1
PeçaQuè fa
duDisk usage: calcula l’espai que ocupen fitxers i directoris
-sSummarize: només mostra el total de cada argument, no cada subdirectori
-hHuman-readable: mides en K, M, G (potències de 1024)
dir1El directori que vols mesurar (pot ser una ruta absoluta o relativa)

Sense -s, du mostraria una línia per a cada subdirectori. Sense -h, mostraria el resultat en blocs d’1 KiB.

Exemple

Suposem aquesta estructura:

dir1/
├── fitxer1.txt         (2 MiB)
├── subdir1/
│   ├── fitxer2.txt     (1 MiB)
│   └── fitxer3.txt     (500 KiB)
└── subdir2/
    └── fitxer4.txt     (3 MiB)
$ du -sh dir1
6.5M	dir1

El directori i tot el seu contingut ocupen 6,5 MiB al disc. Compara-ho amb el que passa sense -s:

$ du -h dir1
3.0M	dir1/subdir2
1.5M	dir1/subdir1
6.5M	dir1

Més exemples

Diversos directoris alhora, amb un total al final (-c):

$ du -shc dir1 musica
6.5M	dir1
800K	musica
7.3M	total

Tots els elements del directori actual, ordenats de més petit a més gran (sort -h entén les unitats K, M, G):

$ du -sh * | sort -h
4.0K	notes.txt
800K	musica
6.5M	dir1
15M	fotos estiu

El teu directori personal, sense sortir del sistema de fitxers on és (-x), i amagant els errors de permisos:

du -shx ~ 2>/dev/null

Excloure un tipus de fitxer del càlcul:

du -sh --exclude='*.iso' ~/Baixades

Mida al disc o mida real?

Fixa’t en notes.txt de l’exemple anterior: té 1.200 bytes, però du diu 4.0K. És perquè du mesura l’espai que ocupa al disc, i el sistema de fitxers reserva l’espai en blocs (normalment de 4 KiB). Si vols la suma de les mides dels fitxers, com la que veus amb ls -l, fes servir --apparent-size:

$ du -sh --apparent-size notes.txt
1.2K	notes.txt

En directoris amb molts fitxers petits la diferència pot ser gran. En fitxers dispersos (sparse), com les imatges de disc de màquines virtuals, passa el contrari: la mida aparent pot ser molt més gran que l’espai ocupat de debò.

Compte amb…

  • Permisos. Si no pots llegir algun subdirectori, du mostra Permission denied i el total queda per sota del real. Per mesurar directoris del sistema, fes servir sudo du -sh /var.
  • Lentitud. du ha de recórrer tots els fitxers. En directoris enormes o en unitats de xarxa pot trigar força.
  • Enllaços durs. Si un fitxer té diversos enllaços durs dins del mateix directori, du el compta una sola vegada.

Comandes relacionades