====== 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}}