Linux aufräumen — Speicher freigeben mit apt, snap und flatpak

Einsteiger Praxis Veröffentlicht am 7. April 2026 von Gunter Herdrich

Irgendwann zeigt jedes Linux-System Zeichen des Vollwerdens: Installationen die niemand mehr braucht, Cache-Dateien aus Monaten, alte Kernel, snap-Revisionen die still vor sich hin lagern. Ich räume meinen Rechner jeden ersten Sonntag im Monat auf. Dauert zehn Minuten und hält das System schlank. Das passiert nicht durch Fahrlässigkeit, sondern weil Paketverwaltungen und Anwendungen standardmäßig auf Sicherheit setzen — und Löschen nie automatisch passiert. Dieser Artikel zeigt dir Schritt für Schritt, wie du mit wenigen Befehlen mehrere Gigabyte freischaufelst, ohne wichtige Daten zu verlieren.

Wie voll ist mein System wirklich?

Bevor du anfängst zu löschen, brauchst du eine Bestandsaufnahme. Drei Befehle geben dir einen vollständigen Überblick — von der Partition bis zum einzelnen Verzeichnis.

df -h: Überblick über alle Partitionen

df -h zeigt den belegten und freien Speicher aller eingehängten Dateisysteme. Das Flag -h (human-readable) gibt die Werte in GB und MB aus statt in rohen 1-Kilobyte-Blöcken.

$ df -h
Dateisystem    Größe  Benutzt  Verf.  Verw%  Eingehängt auf
/dev/sda1        50G      38G   9,5G    81%  /
tmpfs           2,0G     1,2M   2,0G     1%  /run
/dev/sda15      253M     5,8M   247M     3%  /boot/efi

Eine Auslastung über 80% auf / ist ein klares Signal zum Handeln. Ich bin mal sorglos an 95% rangefahren — apt konnte keine Updates mehr installieren, und der Login-Bildschirm hat sich aufgehängt. Seitdem ist 80% meine persönliche Schmerzgrenze. Unter 10% freier Platz kann bei ext4 die Performance spürbar beeinträchtigen: Das Dateisystem reserviert standardmäßig 5% des Platzes für den Root-Nutzer, damit Systemdienste auch bei vollem Benutzerbereich noch schreiben können. Diese Reserve zählt als belegt — du hast also tatsächlich weniger als angezeigt zur Verfügung.

du -sh: Platzfresser aufspüren

du (disk usage) zeigt den Speicherbedarf von Verzeichnissen. Mit -s (summary) bekommst du eine einzige Zahl statt einer rekursiven Liste, mit -h in lesbarem Format. Die typischen Verdächtigen im Vergleich:

$ du -sh ~/.cache
1,8G    /home/gunter/.cache

$ du -sh ~/.local/share/flatpak
4,2G    /home/gunter/.local/share/flatpak

$ sudo du -sh /var/cache/apt/archives
823M    /var/cache/apt/archives

$ sudo du -sh /var/log
256M    /var/log

Für eine sortierte Übersicht aller Toplevel-Verzeichnisse — um wirklich nichts zu übersehen — hilft dieser Einzeiler:

$ du -sh /* 2>/dev/null | sort -rh | head -20

Das 2>/dev/null unterdrückt Fehlermeldungen bei Verzeichnissen ohne Leseberechtigung. sort -rh sortiert nach Größe absteigend.

ncdu: Interaktive Alternative

ncdu ist ein Terminal-Dateimanager mit Fokus auf Speicherverbrauch. Im Gegensatz zu du zeigt es eine navigierbare Baumansicht — du kannst Verzeichnisse aufklappen, siehst sofort die Größenverhältnisse und kannst Einträge direkt mit d löschen.

$ sudo apt install ncdu
$ ncdu /

Besonders nützlich wenn du nicht weißt, wo der Platz geblieben ist: ncdu durchsucht das gesamte Dateisystem und zeigt interaktiv die größten Verzeichnisse zuerst.

apt aufräumen

APT (Advanced Package Tool) ist die Paketverwaltung auf Debian, Ubuntu und deren Derivaten. Mit der Zeit sammeln sich drei Arten von Ballast an: nicht mehr benötigte Abhängigkeiten, veraltete Kernel-Versionen und heruntergeladene Installationsdateien die längst installiert sind.

Nicht mehr benötigte Pakete entfernen

apt autoremove entfernt Pakete, die als Abhängigkeiten automatisch installiert wurden und nach Deinstallation des Hauptpakets übrig geblieben sind. Das ist der häufigste stille Platzfresser auf Systemen die regelmäßig aktualisiert werden — auf einem aktiven Ubuntu-System summiert das sich leicht auf 500 MB bis 2 GB.

$ sudo apt autoremove
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden Pakete werden ENTFERNT:
  libpython3.10 linux-headers-5.15.0-91 linux-image-5.15.0-91-generic ...
0 aktualisiert, 0 neu installiert, 14 zu entfernen und 0 nicht aktualisiert.
Nach dieser Operation werden 1.234 MB Plattenplatz freigegeben.
Tipp: Mit --purge werden zusätzlich Konfigurationsdateien der entfernten Pakete gelöscht. Das ist in der Regel sicher: sudo apt autoremove --purge

Paket-Cache leeren

APT lädt .deb-Dateien vor der Installation herunter und speichert sie in /var/cache/apt/archives/. Nach der Installation bleiben sie dort — als Cache für eventuelle Neuinstallationen ohne Internet. Zwei Befehle helfen hier je nach Situation:

  • apt autoclean — löscht nur Pakete, für die es bereits neuere installierte Versionen gibt. Die aktuellen Caches bleiben erhalten.
  • apt clean — leert den Cache vollständig. Pakete werden beim nächsten Installieren neu heruntergeladen. Auf Systemen mit stabiler Internetverbindung problemlos.
$ sudo apt autoclean
Paketlisten werden gelesen... Fertig

$ sudo apt clean
# Kein Output — /var/cache/apt/archives/ ist jetzt leer

Für den Alltag reicht autoclean. Bei akutem Platzmangel nimm clean.

Alte Kernel entfernen

Bei jedem Kernel-Update installiert Ubuntu eine neue Version parallel zur alten. Das ist sinnvoll: Falls der neue Kernel Probleme macht, kannst du beim Booten die alte Version wählen. Nach mehreren Updates lagern aber schnell 2–4 GB an Kernel-Paketen herum die niemand mehr braucht.

Zunächst den aktuell genutzten Kernel ermitteln:

$ uname -r
6.8.0-52-generic

Dann alle installierten Kernel-Images auflisten:

$ dpkg --list | grep linux-image
ii  linux-image-6.8.0-51-generic   6.8.0-51.52  amd64
ii  linux-image-6.8.0-52-generic   6.8.0-52.53  amd64   ← aktiv, nicht löschen!
rc  linux-image-5.15.0-91-generic  5.15.0-91    amd64   ← rc = entfernbar

Pakete mit Status rc (removed, config remains) sind bereits deinstalliert — ihre Konfigurationsdateien lassen sich mit dpkg --purge entfernen. Pakete mit ii sind vollständig installiert. Den alten aktiven Kernel entfernst du so:

$ sudo apt remove linux-image-6.8.0-51-generic linux-headers-6.8.0-51-generic
$ sudo update-grub
Achtung: Lösche niemals den Kernel der gerade läuft (Ausgabe von uname -r). Behalte außerdem immer mindestens einen Fallback — Kernel-Probleme sind ohne Boot-Option schwer zu debuggen.

snap aufräumen

snap speichert von jedem Paket standardmäßig die letzten zwei Revisionen: eine aktive und eine als Rollback-Option. Das klingt nach wenig, summiert sich aber auf Systemen mit vielen snap-Paketen schnell auf 5 GB und mehr — jede Revision ist eine vollständige Kopie des Pakets mit allen Abhängigkeiten.

Alle snap-Revisionen anzeigen

$ snap list --all
Name          Version   Rev    Tracking        Publisher  Notes
firefox       124.0.1   4336   latest/stable   mozilla    -
firefox       123.0.1   4290   latest/stable   mozilla    disabled
snapd         2.63      21759  latest/stable   canonical  snapd
vlc           3.0.20    3605   latest/stable   videolan   -
vlc           3.0.18    3564   latest/stable   videolan   disabled

Revisionen mit disabled im Notes-Feld sind die alten Versionen. Sie belegen Platz, werden aber beim Start nicht mehr genutzt.

Alte Revisionen mit Script entfernen

snap hat keinen eingebauten Befehl für „alle alten Revisionen löschen“. Dieses kleine Script erledigt das automatisch mit awk und einer while-Schleife:

#!/bin/bash
# snap-cleanup.sh — entfernt alle disabled snap-Revisionen
snap list --all | awk '/disabled/{print $1, $3}' |
while read name revision; do
    sudo snap remove "$name" --revision="$revision"
done

Speichere es, mach es ausführbar und starte es:

$ chmod +x snap-cleanup.sh
$ ./snap-cleanup.sh
firefox (revision 4290) removed
vlc (revision 3564) removed

snap-Cache leeren

snap legt außerdem Pakete in einem eigenen Cache ab. Dieser kann bedenkenlos geleert werden:

$ du -sh /var/lib/snapd/cache
1,1G    /var/lib/snapd/cache

$ sudo rm -rf /var/lib/snapd/cache/*

flatpak aufräumen

flatpak-Anwendungen werden mit allen Laufzeit-Abhängigkeiten (Runtimes) ausgeliefert — das macht sie von der System-Distribution unabhängig, aber auch speicherhungrig. Eine einzige GNOME-Runtime kann 600–800 MB belegen. Wenn Anwendungen deinstalliert werden oder auf neuere Runtimes wechseln, bleiben die alten Runtimes als Waisen zurück.

Nicht mehr genutzte Runtimes entfernen

$ flatpak uninstall --unused
Suche nach nicht genutzten Refs...
           ID                             Branch   Op
1.          org.freedesktop.Platform       22.08    r
2.          org.gnome.Platform             44       r

Fortfahren? [J/n]: J
Removing: org.freedesktop.Platform/x86_64/22.08...
Removing: org.gnome.Platform/x86_64/44...
Freed: 1,7 GB

Der Befehl ist sicher: Er entfernt nur Runtimes die kein installiertes Paket mehr benötigt. Aktive Anwendungen bleiben unangetastet.

flatpak-Installation reparieren

Nach Updates oder abgebrochenen Installationen können inkonsistente Zustände entstehen. flatpak repair behebt das ohne Datenverlust:

$ flatpak repair
Suche nach verwaisten Refs...
Überprüfe Checksummen...
Fertig.

Benutzerdaten aufräumen

Programme hinterlassen in deinem Home-Verzeichnis beträchtliche Datenmengen: Browser-Caches, Thumbnails, Papierkorb-Inhalte und System-Logs. Der Vorteil: Diese Daten gehören dir, also brauchst du kein sudo.

Browser- und Thumbnail-Cache leeren

Der Ordner ~/.cache enthält ausschließlich regenerierbare Daten — er kann bedenkenlos vollständig geleert werden. Bei mir waren das nach sechs Monaten über 4 GB. Allein der Firefox-Cache hat 1,2 GB verschlungen. Typische Inhalte: Browser-Caches (Firefox, Chromium), Thumbnail-Vorschauen für den Dateimanager, Paket-Metadaten, Sprachmodelle von Anwendungen.

$ du -sh ~/.cache
1,8G    /home/gunter/.cache

$ rm -rf ~/.cache/*

Beim nächsten Start deiner Anwendungen werden Caches automatisch neu aufgebaut. Thumbnails in Nautilus erscheinen beim nächsten Öffnen eines Bilderordners wieder.

Papierkorb leeren

Der Linux-Papierkorb liegt unter ~/.local/share/Trash/. Wer regelmäßig Dateien löscht aber den Papierkorb nie leert, sammelt hier schnell Gigabyte an:

$ du -sh ~/.local/share/Trash
2,3G    /home/gunter/.local/share/Trash

$ rm -rf ~/.local/share/Trash/*
Tipp: Alternativ kannst du den Papierkorb im Dateimanager (Nautilus, Dolphin, Thunar) über das Kontextmenü leeren — das Ergebnis ist identisch.

System-Logs reduzieren mit journalctl

systemd-journald sammelt alle System- und Service-Logs in /var/log/journal/. Ohne explizite Konfiguration kann dieses Verzeichnis auf 4 GB und mehr anwachsen. Zwei nützliche Optionen:

# Logs auf maximal 500 MB begrenzen (älteste werden gelöscht):
$ sudo journalctl --vacuum-size=500M
Vacuuming done, freed 1.2G of archived journals.

# Oder nur Logs jünger als 2 Wochen behalten:
$ sudo journalctl --vacuum-time=2weeks
Vacuuming done, freed 856M of archived journals.

Um das dauerhaft zu begrenzen, trage in /etc/systemd/journald.conf ein:

[Journal]
SystemMaxUse=500M

Danach sudo systemctl restart systemd-journald — ab dann hält journald die Logs automatisch unter 500 MB.

Docker aufräumen (Bonus)

Falls du Docker installiert hast, ist es oft der mit Abstand größte Platzfresser auf dem System: Gestoppte Container werden nicht automatisch gelöscht, Images bleiben nach Versions-Updates liegen, Build-Cache wächst bei aktivem Entwickeln auf mehrere Gigabyte. Ein Blick auf den aktuellen Stand:

$ docker system df
TYPE            TOTAL   ACTIVE   SIZE       RECLAIMABLE
Images          23      8        14.2GB     8.7GB (61%)
Containers      5       2        1.3GB      890MB
Volumes         12      4        4.1GB      2.8GB
Build Cache     47      0        2.3GB      2.3GB (100%)

Mit einem Befehl alles entfernen was nicht aktiv genutzt wird:

$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y
Total reclaimed space: 6,1GB

Mit --volumes werden zusätzlich anonyme Volumes entfernt. Vorsicht: Wenn Datenbankdaten in anonymen Volumes liegen, gehen sie verloren. Prüfe vorher mit docker volume ls welche Volumes existieren und ob sie noch gebraucht werden.

Aufräum-Script: alles in einem Durchlauf

Die wichtigsten Befehle als Script zusammengefasst — mit Bestätigung vor jedem Schritt damit nichts ungewollt passiert. Das Script überspringt Docker und snap wenn die Programme nicht installiert sind.

#!/bin/bash
# cleanup.sh — Linux Speicher freigeben
# bin-bash.de

set -e

echo "=== Linux Aufräum-Script ==="
df -h / | tail -1 | awk '{print "Vor dem Aufräumen: " $4 " frei von " $2}'
echo ""

echo "[1/6] APT: Nicht benötigte Pakete entfernen"
read -rp "  Fortfahren? [j/N] " antwort
[[ "$antwort" =~ ^[jJ]$ ]] && sudo apt autoremove --purge -y || echo "  Übersprungen."

echo ""
echo "[2/6] APT: Paket-Cache leeren"
read -rp "  Fortfahren? [j/N] " antwort
[[ "$antwort" =~ ^[jJ]$ ]] && sudo apt clean && echo "  Fertig." || echo "  Übersprungen."

echo ""
if command -v snap &>/dev/null; then
    echo "[3/6] snap: Alte Revisionen entfernen"
    read -rp "  Fortfahren? [j/N] " antwort
    if [[ "$antwort" =~ ^[jJ]$ ]]; then
        snap list --all | awk '/disabled/{print $1, $3}' |
        while read name revision; do
            sudo snap remove "$name" --revision="$revision"
        done
        echo "  Fertig."
    else
        echo "  Übersprungen."
    fi
else
    echo "[3/6] snap: nicht installiert — übersprungen."
fi

echo ""
if command -v flatpak &>/dev/null; then
    echo "[4/6] flatpak: Nicht genutzte Runtimes entfernen"
    read -rp "  Fortfahren? [j/N] " antwort
    [[ "$antwort" =~ ^[jJ]$ ]] && flatpak uninstall --unused -y || echo "  Übersprungen."
else
    echo "[4/6] flatpak: nicht installiert — übersprungen."
fi

echo ""
echo "[5/6] Cache leeren (~/.cache)"
read -rp "  Fortfahren? [j/N] " antwort
[[ "$antwort" =~ ^[jJ]$ ]] && rm -rf ~/.cache/* && echo "  Fertig." || echo "  Übersprungen."

echo ""
echo "[6/6] Journal-Logs: Alles älter als 2 Wochen löschen"
read -rp "  Fortfahren? [j/N] " antwort
[[ "$antwort" =~ ^[jJ]$ ]] && sudo journalctl --vacuum-time=2weeks || echo "  Übersprungen."

echo ""
echo "=== Fertig! ==="
df -h / | tail -1 | awk '{print "Nach dem Aufräumen: " $4 " frei von " $2}'

Speichere das Script als cleanup.sh, mach es ausführbar und starte es:

$ chmod +x cleanup.sh
$ ./cleanup.sh

Am Ende vergleichst du den freien Platz vor und nach dem Aufräumen direkt in der Ausgabe.

Zusammenfassung: Was bringt wie viel?

Zur Orientierung: Was du realistisch auf einem Ubuntu-Desktop nach 6–12 Monaten Betrieb freischaufeln kannst:

  • apt autoremove + clean: 500 MB – 2 GB, je nach Installations-Historie
  • Alte Kernel: 500 MB – 2 GB pro Kernel-Version
  • snap alte Revisionen: 1–5 GB bei vielen installierten snaps
  • flatpak –unused: 1–3 GB wenn mehrere Runtimes veraltet sind
  • ~/.cache leeren: 500 MB – 3 GB, abhängig von Browser-Nutzung
  • journalctl –vacuum: 200 MB – 2 GB auf aktiven Systemen

Zusammen sind 5–15 GB realistisch — ohne eine einzige eigene Datei zu löschen.

Weiterführende Seiten