===== du - Disk Usage (Speicherverbrauch) =====
**Kurzfassung:** du (disk usage) zeigt den Speicherplatzverbrauch von Dateien und Verzeichnissen an. Es ist das wichtigste Tool, um herauszufinden, welche Dateien und Ordner viel Speicherplatz belegen und wo aufgeräumt werden sollte. Unverzichtbar für Speicherverwaltung und Kapazitätsoptimierung.
==== Übersicht ====
du analysiert rekursiv Verzeichnisstrukturen und summiert den Speicherverbrauch von Dateien und Unterverzeichnissen. Im Gegensatz zu ''df'' zeigt es detailliert, wo genau Speicher verbraucht wird.
==== Voraussetzungen ====
* Zugriff auf die Linux-Kommandozeile
* Grundkenntnisse in [[sammlung:bash_kommandos|Bash-Kommandos]]
* Leserechte für die zu prüfenden Verzeichnisse
==== Syntax ====
du [OPTIONEN] [VERZEICHNIS...]
==== Anleitung ====
=== Häufige Anwendungsfälle ===
==== Größe eines Verzeichnisses ====
# Größe des aktuellen Verzeichnisses
du -sh .
# Größe eines bestimmten Verzeichnisses
du -sh /var/log
# Nur Gesamtsumme
du -s /home/user
==== Unterverzeichnisse auflisten ====
# Größe aller direkten Unterverzeichnisse
du -h --max-depth=1
# Bis zu 2 Ebenen tief
du -h --max-depth=2
# Alternative Schreibweise
du -h -d 1
==== Alle Dateien anzeigen ====
# Alle Dateien und Verzeichnisse
du -ah /home/user
# Nur Dateien über 100MB
du -ah | awk '$1 ~ /[0-9]+M/ && $1+0 > 100'
===== Sortieren und Filtern =====
==== Nach Größe sortieren ====
# Top 10 größte Verzeichnisse
du -h | sort -rh | head -10
# Top 20 größte Dateien im aktuellen Verzeichnis
du -ah | sort -rh | head -20
# Größte Verzeichnisse in /var
du -h /var --max-depth=1 | sort -rh
==== Mit Summe ====
# Mit Gesamtsumme am Ende
du -shc *
# Mehrere Verzeichnisse mit Summe
du -shc /var/log /var/cache /tmp
===== Nützliche Optionen =====
^ Option ^ Bedeutung ^
| -h | Human-readable Format (KB, MB, GB) |
| -s | Nur Gesamtsumme (summarize) |
| -a | Alle Dateien, nicht nur Verzeichnisse |
| -c | Gesamtsumme am Ende anzeigen |
| -d N, --max-depth=N | Maximale Tiefe der Anzeige |
| --exclude=MUSTER | Dateien/Verzeichnisse ausschließen |
| -x | Nur ein Dateisystem (nicht über Mount-Points) |
| --time | Zeitstempel der letzten Änderung |
| -b | Größe in Bytes |
| -k | Größe in Kilobytes |
| -m | Größe in Megabytes |
===== Praktische Beispiele =====
==== Speicherfresser finden ====
# Größte Dateien im Home-Verzeichnis
du -ah /home/user | sort -rh | head -20
# Verzeichnisse über 1GB finden
du -h /var | awk '$1 ~ /G$/ && $1+0 > 1'
# Größe ohne Unterverzeichnisse
du -sh /var/log/*
# Versteckte Dateien einschließen
du -sch .[!.]* * | sort -rh
==== Cache und temporäre Dateien ====
# Cache-Verzeichnisse finden
du -h --max-depth=3 /home | grep -i cache
# Browser-Cache-Größe
du -sh ~/.cache/mozilla
du -sh ~/.cache/google-chrome
# Temporäre Dateien
du -sh /tmp /var/tmp
==== Log-Dateien analysieren ====
# Größe aller Log-Dateien
du -ch /var/log/*.log
# Alte Log-Dateien mit Datum
du -ah --time /var/log | sort -k2
# Größte Log-Datei finden
du -h /var/log | sort -rh | head -1
==== Mit Ausschlüssen arbeiten ====
# Bestimmte Dateitypen ausschließen
du -h --exclude='*.log' --max-depth=1
# Cache-Ordner ausschließen
du -h --exclude='cache' --exclude='tmp' /home/user
# Mehrere Muster ausschließen
du -h --exclude='node_modules' --exclude='.git' .
===== Erweiterte Anwendungen =====
==== Vergleiche und Monitoring ====
# Größenänderung überwachen
du -sh /var/log > before.txt
# ... Zeit vergeht ...
du -sh /var/log > after.txt
diff before.txt after.txt
# Kontinuierliche Überwachung
watch -n 60 'du -sh /var/log'
# Tägliches Wachstum protokollieren
echo "$(date): $(du -sh /data)" >> growth.log
==== Dateisystem-übergreifend ====
# Nur aktuelles Dateisystem (nicht über Mount-Points)
du -xh --max-depth=1 /
# Alle Dateisysteme durchsuchen
du -h --max-depth=1 /
==== Formatierte Ausgabe ====
# Als CSV exportieren
du -ab | awk '{print $2","$1}' > sizes.csv
# Mit Datum für Report
du -h --time --max-depth=1 /home | column -t
# Nur Verzeichnisse über bestimmter Größe
du -h --max-depth=1 | awk '$1 ~ /G$/ || $1+0 > 500'
===== Kombination mit anderen Befehlen =====
# Mit find: Alle Dateien über 100MB
find . -type f -size +100M -exec du -h {} \; | sort -rh
# Mit grep: Nur PDF-Dateien
du -ah | grep '\.pdf$' | sort -rh
# Mit xargs: Dateien löschen
du -ah /tmp | awk '$1+0 > 1000 {print $2}' | xargs rm -f
# Mit tar: Große Verzeichnisse archivieren
du -h --max-depth=1 | awk '$1 ~ /G$/' | cut -f2 | xargs tar -czf backup.tar.gz
===== Wichtige Hinweise =====
* du zeigt tatsächliche Dateigrößen, [[sammlung:df|df]] zeigt Dateisystem-Auslastung
* Sparse Files (dünn besetzte Dateien) werden mit ihrer logischen Größe angezeigt
* Hard-Links werden mehrfach gezählt (jeder Link zählt separat)
* Bei großen Verzeichnissen kann du lange dauern
* Nutze ''--exclude'' um unnötige Verzeichnisse zu überspringen
* Root-Rechte nötig für vollständigen Zugriff auf alle Verzeichnisse
===== Fehlerbehebung =====
* **"Permission denied"**: Nutze ''sudo'' oder filtere Fehler mit ''2>/dev/null''
* **Langsame Ausführung**: Begrenze Tiefe mit ''--max-depth'' oder schließe große Verzeichnisse aus
* **Unterschied zu df**: du summiert Dateien, df zeigt Dateisystem-Ebene (inkl. Metadaten)
* **Zu viel Output**: Nutze ''-s'' für Zusammenfassung oder pipe durch ''head''
===== Siehe auch =====
* [[sammlung:df|df - Dateisystem-Auslastung]]
* [[sammlung:find|find - Dateien suchen]]
* [[sammlung:ls|ls - Dateien auflisten]]
* [[sammlung:ncdu|ncdu - Interaktive Speicheranalyse]]
* [[sammlung:filesystem|Dateisystem-Übersicht]]
----
{{tag>cli storage utilities}}
----