# 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.

Source: https://www.jpkc.com/db/cheatsheets/shell-system/df-du/

<!-- PROSE:intro -->
`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.
<!-- PROSE:intro:end -->

## df — Dateisystem-Überblick

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

```bash
df -h
```

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

```bash
df -h /var
```

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

```bash
df -hT
```

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

```bash
df -ih
```

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

```bash
df -h --total
```

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

```bash
df -h -x tmpfs -x devtmpfs -x squashfs
```

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

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

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

```bash
df -h -t ext4
```

## du — Verzeichnisgrößen

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

```bash
du -sh /var/log
```

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

```bash
du -sh * | sort -rh
```

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

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

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

```bash
du -h /var/log
```

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

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

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

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

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

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

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

```bash
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.

```bash
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.

```bash
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.

```bash
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.

```bash
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).

```bash
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.

```bash
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.

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

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

```bash
journalctl --disk-usage
```

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

```bash
sudo journalctl --vacuum-size=500M
```

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

```bash
sudo journalctl --vacuum-time=7d
```

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

```bash
docker system df -v
```

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

```bash
docker system prune -a --volumes
```

## Monitoring & Skripting

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

```bash
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.

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

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

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

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

```bash
ncdu /var
```

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

```bash
lsblk -f
```

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

```bash
findmnt -D
```

<!-- PROSE:outro -->
## 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`.

## Weiterführende Links

- [ubuntuusers-Wiki: df](https://wiki.ubuntuusers.de/df/) – deutschsprachige Erklärung zu Plattenplatz auf Dateisystem-Ebene
- [ubuntuusers-Wiki: du](https://wiki.ubuntuusers.de/du/) – deutschsprachige Anleitung zum Ermitteln von Verzeichnisgrößen
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [lsblk](https://www.jpkc.com/db/cheatsheets/shell-system/lsblk/) – listet Block-Geräte, Partitionen und Mountpoints auf
- [mount](https://www.jpkc.com/db/cheatsheets/shell-system/mount/) – bindet Dateisysteme ein und zeigt Mounts an
- [dd](https://www.jpkc.com/db/cheatsheets/shell-system/dd/) – kopiert und schreibt Datenblöcke und Images auf Geräteebene

