Post 574
Unix

Linux: Große Dateien finden und Verzeichnisgrößen analysieren

Wenn der Festplattenspeicher knapp wird, ist die erste Frage: Wo sind die großen Dateien? Linux bietet mehrere leistungsfähige Werkzeuge, um Dateien über einer bestimmten Größe zu finden und Verzeichnisse nach ihrem Speicherverbrauch zu sortieren. Die Kombination aus find und du ist dabei unschlagbar schnell.

Dateien über einer bestimmten Größe finden

Mit find lassen sich Dateien ab einer bestimmten Größe suchen und übersichtlich ausgeben. Das folgende Beispiel findet alle Dateien größer als 200 MB im Verzeichnis /var/:

find /var/ -type f -size +200M -exec ls -lh {} ; 2>/dev/null | awk '{ print $NF ": " $5 }' | sort -nrk 2,2

Hinweis: Die Größenangabe in find verwendet k für Kilobyte, M für Megabyte, G für Gigabyte. +200M bedeutet „größer als 200 MB“. Der ursprüngliche Befehl mit +20000k entspricht ~20 MB.

Die zehn größten Verzeichnisse finden mit du

du (Disk Usage) zeigt den Speicherverbrauch von Verzeichnissen an. Kombiniert mit sort und head erhält man schnell die größten Verbraucher:

# Top 10 Verzeichnisse nach Größe
du -a /var | sort -n -r | head -n 10

# Lesbarere Ausgabe mit menschenlesbaren Größen (nur erste Ebene)
du -h --max-depth=1 /var | sort -rh | head -n 10

Gesamte Festplattennutzung im Überblick

Bevor man in die Details geht, lohnt sich ein schneller Überblick über alle eingehängten Dateisysteme:

# Übersicht aller Dateisysteme
df -h

# Nur lokale Dateisysteme, ohne tmpfs
df -h --type=ext4 --type=xfs

Typische Verdächtige unter Linux

Auf Linux-Servern füllen sich bestimmte Verzeichnisse besonders schnell:

# Log-Dateien prüfen
du -h --max-depth=2 /var/log | sort -rh | head -n 20

# Alte Kernel-Images prüfen
du -h /boot
dpkg -l linux-image* | grep ^ii

# Docker-Images und -Container
docker system df

# Temporäre Dateien
du -h /tmp
du -h /var/tmp

Alte Log-Dateien aufräumen

Log-Dateien sind häufig der größte Speicherfresser. Mit journalctl lassen sich systemd-Logs beschränken:

# Aktuelle Log-Größe anzeigen
journalctl --disk-usage

# Logs älter als 7 Tage löschen
sudo journalctl --vacuum-time=7d

# Logs auf maximal 500 MB beschränken
sudo journalctl --vacuum-size=500M

ncdu: Interaktiver Speicherplatz-Analyzer

Für komfortablere Analyse empfiehlt sich ncdu – ein interaktiver, curses-basierter Festplatten-Analyzer:

apt-get install ncdu
ncdu /var

Weitere Tipps zur Linux-Serverwartung gibt es in der Kategorie Linux & Server. Wer regelmäßige Aufräumarbeiten automatisieren möchte, findet im Beitrag Linux Server Backup ergänzende Strategien.