df & du — Plattenplatz analysieren unter Linux

Praxis-Guide zu df und du — freien Speicher pro Dateisystem prüfen, Verzeichnisgrößen ermitteln und volle Festplatten gezielt aufräumen.

df und du sind das Duo, mit dem du Plattenplatz im Griff behältst: df (disk free) zeigt dir die Belegung auf Dateisystem-Ebene – also pro gemounteter Partition –, während du (disk usage) die Größe einzelner Verzeichnisse und Dateien summiert. Wenn eine Disk vollläuft, ist das deine erste Anlaufstelle: df -h verrät, welches Dateisystem voll ist, du -sh * zeigt dir wo der Platz steckt. Dieser Guide führt dich von der schnellen Übersicht über das Aufspüren großer Dateien bis zu Aufräum- und Monitoring-Mustern.

df — Dateisystem-Überblick

df -h — Zeigt die Belegung aller gemounteten Dateisysteme in lesbarer Form (human-readable).

df -h

df -h <pfad> — Zeigt den Plattenplatz des Dateisystems, das den angegebenen Pfad enthält.

df -h /var

df -hT — Zeigt den Plattenplatz samt Dateisystem-Typ (ext4, xfs, tmpfs usw.).

df -hT

df -i — Zeigt die Inode-Belegung statt der Block-Belegung (diagnostiziert „kein Platz mehr" trotz freier Blöcke).

df -ih

df -h --total — Hängt eine Gesamtsummen-Zeile unten an.

df -h --total

df -h -x tmpfs -x devtmpfs — Schließt virtuelle Dateisysteme aus (zeigt nur echte Platten).

df -h -x tmpfs -x devtmpfs -x squashfs

df -h --output=source,size,used,avail,pcent,target — Eigene Ausgabespalten festlegen.

df -h --output=source,size,avail,pcent,target

df -h -t ext4 — Zeigt nur Dateisysteme eines bestimmten Typs.

df -h -t ext4

du — Verzeichnisgrößen

du -sh <verzeichnis> — Zeigt die Gesamtgröße eines Verzeichnisses in lesbarer Form.

du -sh /var/log

du -sh * — Zeigt die Größe jedes Eintrags im aktuellen Verzeichnis.

du -sh * | sort -rh

du -sh */ | sort -rh — Zeigt nur die Größen der Unterverzeichnisse, größte zuerst.

du -sh */ | sort -rh | head -10

du -h <verzeichnis> — Zeigt die Größen aller Unterverzeichnisse rekursiv.

du -h /var/log

du -h --max-depth=<n> <verzeichnis> — Begrenzt die Verzeichnistiefe auf n Ebenen.

du -h --max-depth=1 /var

du -ah <verzeichnis> — Zeigt die Größen aller Dateien und Verzeichnisse (nicht nur der Verzeichnisse).

du -ah /var/log | sort -rh | head -20

du -sh <verzeichnis> --exclude='<muster>' — Schließt Dateien oder Verzeichnisse aus, die auf ein Muster passen.

du -sh /var --exclude='*.log'

du -sc <verzeichnisse> | sort -rh — Zeigt die Summe je angegebenem Verzeichnis samt Gesamtsumme.

du -sc /var/log /var/lib /var/cache | sort -rh

Große Dateien & Verzeichnisse finden

du -ah <verzeichnis> | sort -rh | head -<n> — Findet die n größten Dateien und Verzeichnisse.

du -ah /var | sort -rh | head -20

find <verzeichnis> -type f -size +<größe> -exec ls -lh {} \; — Findet Dateien, die größer als eine bestimmte Größe sind.

find / -type f -size +100M -exec ls -lh {} \; 2>/dev/null

find <verzeichnis> -type f -size +<größe> | sort — Listet alle Dateien über einem Größen-Schwellwert.

find /var -type f -size +50M 2>/dev/null | sort

find <verzeichnis> -type f -name '*.log' -size +<größe> — Findet gezielt große Log-Dateien.

find /var/log -type f -name '*.log' -size +10M

find <verzeichnis> -xdev -type f -size +<größe> | head -20 — Findet große Dateien, ohne Dateisystem-Grenzen zu überschreiten (-xdev).

find / -xdev -type f -size +500M 2>/dev/null | head -20

Aufräum-Muster

du -sh /var/log/*.gz — Prüft die Größe alter, komprimierter Log-Dateien.

du -sh /var/log/*.gz /var/log/*.[0-9]

find /var/log -name '*.gz' -mtime +<tage> -delete — Löscht komprimierte Logs, die älter als n Tage sind.

find /var/log -name '*.gz' -mtime +30 -delete

journalctl --disk-usage — Prüft, wie viel Platz die systemd-Journal-Logs belegen.

journalctl --disk-usage

journalctl --vacuum-size=<größe> — Reduziert die Journal-Logs auf eine maximale Größe.

sudo journalctl --vacuum-size=500M

journalctl --vacuum-time=<zeit> — Entfernt Journal-Logs, die älter als eine Zeitspanne sind.

sudo journalctl --vacuum-time=7d

docker system df — Zeigt den Docker-Plattenverbrauch (Images, Container, Volumes, Build-Cache).

docker system df -v

docker system prune -a — Entfernt ungenutzte Docker-Daten (Images, Container, Netzwerke).

docker system prune -a --volumes

Monitoring & Skripting

df -h / | awk 'NR==2 {print $5}' — Extrahiert den Belegungs-Prozentsatz des Root-Dateisystems.

df -h / | awk 'NR==2 {print "Root usage: " $5}'

df -h | awk '$5+0 > 80' — Zeigt Dateisysteme, die zu mehr als 80 % gefüllt sind.

df -h | awk '+$5 > 80 {print $6 ": " $5 " full"}'

watch -n 5 df -h — Überwacht die Plattenbelegung in Echtzeit, Aktualisierung alle 5 Sekunden.

watch -n 5 'df -h | grep -v tmpfs'

ncdu <verzeichnis> — Interaktiver Plattenplatz-Analysator mit ncurses-Oberfläche (ncdu installieren).

ncdu /var

lsblk -f — Listet Block-Geräte mit Dateisystem-Infos und Mountpoints.

lsblk -f

findmnt -D — Zeigt gemountete Dateisysteme samt Plattenbelegung (ähnlich wie df).

findmnt -D

Fazit

df und du ergänzen sich: df liefert in Sekunden den Überblick auf Dateisystem-Ebene, du gräbt sich anschließend in die Verzeichnisse, um den Übeltäter zu finden – beide mit -h für lesbare Größen und du -sh * als Alltags-Klassiker. Beachte dabei zwei Stolperfallen: du kann auf großen Bäumen langsam sein und liest dabei viele Dateien, und es kommt zu scheinbaren Diskrepanzen, wenn df mehr Belegung meldet als du – meist liegt das an gelöschten, aber noch von einem Prozess offen gehaltenen Dateien (mit lsof aufspürbar) oder an Dateisystem-Reserven. Die reinen Leseoperationen sind ungefährlich; Vorsicht ist nur bei den Aufräum-Befehlen geboten: find … -delete und journalctl --vacuum-* löschen unwiderruflich – prüfe das Muster erst ohne -delete.

Verwandte Kommandos

  • lsblk – listet Block-Geräte, Partitionen und Mountpoints auf
  • mount – bindet Dateisysteme ein und zeigt Mounts an
  • dd – kopiert und schreibt Datenblöcke und Images auf Geräteebene