====== du - Disk Usage ======
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.
===== Voraussetzungen =====
* Zugriff auf die Linux-Kommandozeile
* Grundkenntnisse in [[sammlung:bash_kommandos|Bash-Kommandos]]
* Leserechte für die zu prüfenden Verzeichnisse
===== Grundlegende Syntax =====
du [OPTIONEN] [VERZEICHNIS...]
===== 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>linux kommandozeile festplatte speicher dateien verwaltung}}