Allzu schnell geht der Platz auf die Festplatte zur Neige. Aber bevor Sie eine neue kaufen, lohnt es, auf dem Datenträger nach den Speicherfressern zu fahnden. Dazu gibt es mehrere Ansätze.
In Zeiten von bezahlbaren Terabyte-Festplatten und dem Einsatz von Cloud Computing scheint stets genügend freier Speicherplatz vorhanden. Falls nicht, reicht der Gang zum nächsten Computermarkt, um eine größere Festplatte zu erwerben und die bestehende zu ergänzen oder ersetzen. Das nachfolgende Einrichten und Benutzen der neuen Festplatte dauert und wäre vielleicht gar nicht notwendig gewesen: Als Alternative käme eine vorherige Recherche nach den Daten, die am meisten Platz belegen, in Frage.
Oft fehlt jedoch das Wissen darüber, wie das System die Daten auf dem Speichermedium ablegt. Der Fokus in diesem Beitrag liegt zunächst auf den Programmen, die sich auf jedem Linux-System befinden. Das dabei erworbene Grundwissen hilft dabei, komplexere graphische Programme anzuwenden und deren Ausgaben korrekt zu deuten.
Alles normal
Das Kommando ls (“list segments”) zeigt mit der Option -l die Daten in einem langen, ausführlichen Format an. So sehen Sie unter anderem die Größe der Dateien und der Verzeichnisse in Bytes. Die Option -h beziehungsweise die Langform --human-readable stellen die Zahl in Form von KBytes, MBytes beziehungsweise GBytes dar. Mit der Option -S (--sort=size) sortieren Sie das Ergebnis absteigend nach Dateigröße, sodass die größten Dateien am oberen Ende der Liste stehen. Kombiniert mit der Option -r (--reverse) drehen Sie die Reihenfolge der jeweiligen Sortierung um. Um die Größe von Verzeichnissen zu ermitteln, hilft die Option -R, die rekursiv alle Unterverzeichnisse des angegebenen Verzeichnisses mit einbezieht (Listing 1).
Listing 1
$ ls -lhR test test: insgesamt 8,0K drwxr-xr-x 2 frank frank 4,0K 7. Mär 16:03 nochwas -rw-r--r-- 1 frank frank 1,5K 7. Mär 16:00 datei1 test/nochwas: insgesamt 4,0K -rw-r--r-- 1 frank frank 5 7. Mär 19:03 datei2
Für die Größe eines Verzeichnisses ist nicht nur die Summe der Größe der einzelnen Dateien maßgeblich, sondern zusätzlich die Verschachtelungstiefe und die dafür notwendigen Verwaltungsinformationen im Dateisystem (Index-Nodes oder kurz Inodes). In Listing 1 belegt das Verzeichnis test 12 KByte im Dateisystem – 4 KByte für datei1, 4 KByte für den Verzeichniseintrag des Unterverzeichnisses nochwas und weitere 4 KByte für datei2, die in nochwas liegt. Die feste Größe erklärt sich dadurch, dass das Dateisystem jeden Eintrag in einer festen Anzahl von Blöcken speichert.
Das Unix-Kommando du (“disk usage”) zeigt ebenfalls die Informationen an. Es bezieht bei einem Aufruf automatisch alle Unterverzeichnisse mit ein. Dabei ermittelt die Option -s (“summarize”) den belegten Platz für jedes angegebene Verzeichnis. Wie bei ls sorgt die Option -h für mehr Lesbarkeit durch Angabe der passenden Größenordnung. Interessiert Sie die Ausgabe der einzelnen Teilsummen, dass heißt, die Größen der Unterverzeichnisse, dann verzichten Sie beim Aufruf von du auf die Option -s.
Im Untergrund
Das Betriebssystem legt die Daten auf einem Datenträger in einem oder mehreren Speicherstücken mit fester Größe ab, sogenannte Disk-Blöcke. Bisher waren diese stets 512 Byte groß, manche Hersteller liefern neue größere Festplatten mit einer Blockgröße von 4096 Byte aus. Wieviel Speicherplatz eine Datei tatsächlich belegt, ermitteln Sie mit dem Kommando ls und der Option -s (--size). In der Ausgabe erscheint am Anfang jeder Zeile eine Spalte mit einem Wert für die Dateigröße. Deren Wert ist das Produkt aus der Größe des Disk-Blocks und der Anzahl belegter Disk-Blöcke. Das erklärt, warum in Zeile 2 von Abbildung 1 die Größenangabe von 476K auftaucht, obwohl die Summe der Dateiengrößen 10 KByte weniger ausmacht: Es handelt sich um die Gesamtsumme des tatsächlich belegten Platzes, bezogen auf die zugeordneten Disk-Blöcke der einzelnen Einträge in den Inodes.
Das System verwendet den Platz auf dem Speichermedium also nicht nur für Daten in den Files, sondern für auch die Strukturen zum Verwalten von Dateien. In solchen Strukturen stehen zum Beispiel die Namen der Dateien, die Zugriffsrechte und statistischen Werte wie das Datum des Erstellens, der letzten Modifikation und des letzten Zugriffs in einem Eintrag. Das Kommando stat zeigt die Informationen sehr detailliert (Abbildung 2).

stat zeigt ausführliche Informationen zu einer Datei.” width=”300″ height=”98″ />
Abbildung 2: Das Kommandostat zeigt ausführliche Informationen zu einer Datei.Neben dem Namen des Eintrags (File:) erfahren Sie, wo und wie die Datei liegt. Das File aus dem Beispiel hat eine Dateigröße von 22791 Byte (Size:) und verteilt sich auf 48 Disk-Blöcke (Blocks:) von jeweils 4096 Byte Umfang (IO Block:). Es handelt sich hier um eine reguläre Datei, möglich wären aber beispielsweise Verzeichnisse, Links (Soft- oder Hardlink), Sockets für Netzwerkverbindungen und Named Pipes zur Interprozesskommunikation.
Freier Speicherplatz
Die am häufigsten gestellte Frage ist die nach dem noch verfügbaren Speicherplatz. Zur Anzeige dieser Informationen gibt es eine ganze Reihe von Werkzeugen. Den noch verfügbaren Speicherplatz auf einem Datenträger ermitteln Sie mit dem Werkzeug df (“diskfree”). Hilfreich ist der Parameter -h (Langform --human-readable) für die Anzeige in menschenlesbarer Form (Listing 2).
Listing 2
$ df -h /dev/sda6 Dateisystem Größe Benut Verf Ben% Eingehängt auf /dev/sda6 37G 33G 2,2G 94% /home
Die Ausgabe zeigt das entsprechende Dateisystem, dessen Größe sowie den benutzten und der noch freien Speicherplatz. Am Schluss stehen der Füllstand in Prozent und das Verzeichnis, dem das Dateisystem im Verzeichnisbaum zugeordnet ist. Geben Sie beim Aufruf von df keinen weiteren Parameter an, fasst das Tool alle Dateisysteme zusammen, die in dem Verzeichnisbaum eingehängt sind.
Nur mit ausgewählten grafischen Elementen präsentieren sich Ncdu [1] und Gt5 [2]. Ncdu ist eine Ncurses-basierte Benutzeroberfläche für das Werkzeug du. Nachdem dem Durchstöbern der Verzeichnishierarchie sortiert es die Einträge absteigend nach der Größe und stellt sie in einer Liste dar. Es zeigt für jeden Eintrag den Anteil des belegten Speichers im Verhältnis zu den anderen Einträgen in der Liste an und nutzt dazu entsprechend viele Hash-Zeichen (Abbildung 3). Mit den Pfeiltasten blättern Sie in der Liste, mittels [Eingabe] wechseln Sie in ein Verzeichnis, und mit [I] öffnet sich ein Informationsfenster. Für den ausgewählten Eintrag zeigt es neben dem Namen auch den Pfad, den Dateityp sowie die Dateigröße an. Apparent size nennt die Dateigröße in Byte, Disk size berechnet den Wert auf der Anzahl der belegten Disk-Blöcke.
Ähnlich schlicht wirkt Gt5. Es durchforstet die Verzeichnisstruktur und erzeugt daraus eine HTML-Seite mit den einzelnen Einträgen. Die Datei liegt im Home-Verzeichnis und heißt .gt5.html. Nach dem Generieren ruft Gt5 automatisch einen Textbrowser auf, wie etwa Elinks. Abbildung 4 zeigt die erzeugte Datei im Webbrowser Iceweasel.
Der Midnight Commander [3] verhilft über den Eintrag Links | Info beziehungsweise Rechts | Info ebenfalls zu den Details für das jeweilige Verzeichnisfenster. Die Informationen zum ausgewählten Eintrag enthalten dessen Namen, Benutzer und Zugriffsrechte, Erstellungs-, Zugriffs- und Modifikationsdatum sowie die Anzahl Disk-Blöcke, die der Eintrag belegt. Weiterhin finden sich die Partition mit dem Namen im Verzeichnisbaum, das verwendete Dateisystem sowie der freie Speicherplatz und die verfügbaren Inodes (Freie Knoten) (Abbildung 5).
Als mögliche Alternativen zu Midnight Commander bieten sich Vfu [4], Vifm [5] und Tdu [6] an. Vfu ist ein Ncurses-basierter Dateimanager (Abbildung 6), Vifm erlaubt das Bedienen mit Tastenkombinationen analog zu Vi und Elinks. Tdu stellt die Verzeichnisstruktur mit dem belegten Speicherplatz als Baumstruktur dar.

Abbildung 6: Über zahlreiche Parameter steuern Sie die Anzeige von Verzeichnissen, die Vfu zusammen mit einer Größenangabe auflistet.
X-Tools
KDE-Benutzern steht mit Kdiskfree ([7],[8]) ein Framework-eigenes Tool zur Verfügung. Sie finden es im Debian-Paket kdf und rufen es mit dem gleichen Namen über die Kommandozeile auf. Es zeigt den Füllstand der Datenträger und Partitionen als Zahlenwert, in Prozent sowie als Balken an (Abbildung 9). Die Köpfe der Spalten fungieren als Schaltflächen und ermöglichen damit das Sortieren nach der gewünschten Eigenschaft. Analog existiert für Gnome das Programm Treesize [9]. Es arbeitet ähnlich wie Kdiskfree, stellt aber auch die einzelnen Verzeichnisse und deren Größe dar. Beide ähneln JDiskReport ([10],[11]).
Die beiden Tools Filelight [12] und Baobab [13] funktionieren anders: Hier zeigen mehrfarbige Ringe und Schichten den Füllstand des Dateisystems. Der Kreis in der Mitte entspricht dem Wurzelverzeichnis. Jede weitere Schicht repräsentiert eine weitere Ebene im Verzeichnisbaum. Die Größe visualisiert das Verhältnis zum gesamten Datenbestand. Je mehr Einträge ein Verzeichnis hat, umso mehr wächst das Segment zum Kreisring. Die Farbe eines Segmentes weist über die Grundfarbe den Bezug zum Wurzelverzeichnis. So erkennen Sie auf einen Blick die einzelnen Verzeichniszweige.
Grau gefärbte äußere Segmente stehen für Dateien. Nach einem Klick auf ein Segment stellt die Software die gewählte Verzeichnisebene detaillierter dar. Über die Schaltflächen mit den Pfeilen oben links gelangen Sie zur vorhergehenden beziehungsweise übergeordneten Verzeichnisebene zurück.
Abbildung 8 zeigt ein Home-Verzeichnis, in dem beispielhaft der Ordner für die Virtualisierungsumgebung Virtualbox markiert ist. Die darin abgelegten Images mit den drei virtuellen Maschinen sind hervorgehoben, der Platzbedarf der einzelnen Images springt sofort ins Auge. Das Image für Debian 5 mit XFCE belegt am wenigsten Ressourcen, Windows XP hingegen beansprucht im Vergleich dazu mehr als das Doppelte.
Während Filelight auf die KDE-Bibliotheken aufsetzt, bildet Baobab das entsprechende Pendant für Gnome (Abbildung 9). Es bietet neben der Grafik mit den Segmenten eine Balkendarstellung. Nach dem Namen des Verzeichnisses (Ordner) folgen als weitere Spalte der Verbrauch als Balken und Prozentangabe, die Größe und die Anzahl der weiteren Einträge in diesem Verzeichnis (Objekte). Der prozentuale Wert des Platzverbrauchs bezieht sich hierbei nicht auf den gesamten belegten Speicherplatz, sondern auf den Anteil im jeweiligen Verzeichnis. Die Balkenfarbe wechselt von Grün über Gelb nach Rot, je höher der Prozentwert ausfällt.
Wer stattdessen eher auf scharfe Kanten und 3D-Effekte steht, nutzt Gdmap [14] und Kdirstat [15]. Beide Werkzeuge betrachten alle Einträge im gesamten Dateisystem. Sie stellen jede Datei als Viereck dar. Je größer die Datei, umso größer das Viereck. Damit lässt sich auf einen Blick erkennen, welche Dateien viel Platz belegen, was die Suche nach den Speicherfressern enorm verkürzt. Die Farbe der Vierecke passen Sie individuell über Einstellungen | Farbschema an. Das Zuordnen erfolgt nicht über den Inhalt, sondern über die Erweiterung einer Datei. In Abbildung 10 zeigt Gdmap alle Bilddateien gelb, Videodaten hingegen rot.

Abbildung 10: Die bunte Klötzchenwelt von Gdmap dient als Orientierungshilfe bei der Suche nach Speicherfressern.
Wer Wert auf besonders ressourcenschonende Programme legt, findet vielleicht Gefallen an Xdu [16] und Xdiskusage [17]. Letzteres basiert auf Xdu und bietet interaktive Funktionen (Abbildung 11). Beide Werkzeuge stellen nur wenig Anforderungen an das Gesamtsystem. In der Darstellung befindet sich das übergeordnete Verzeichnis am linken Rand, Unterverzeichnisse entsprechend weiter rechts. Die Verzeichnisse bilden Rechtecke – je größer das Rechteck, umso mehr Speicherplatz belegt das Verzeichnis. Das aktuell ausgewählte Verzeichnis erhält zusätzlich einen roten Rahmen. Mit den Pfeiltasten wechseln Sie zwischen den Verzeichnisebenen.
Fazit
Mit den Bordmitteln eines Linux-Systems erheben Sie problemlos alle Informationen zu Dateien und Verzeichnissen – sowohl die Dateigröße und die Zugriffsrechte als auch den Füllstand auf den Dateisystemen. Dabei kommt es aber darauf an, die Ausgabe der Programme richtig zu deuten. Je nach Werkzeug fällt diese recht unterschiedlich aus und verwirrt mitunter.
Wer Zahlen wie Byte-Größe und Größe des Disk-Blocks richtig deutet, kommt den wahren Speicherfressern schnell auf die Spur. Dabei erleichtern die vorgestellten Werkzeuge bereits vielfach die Arbeit im Alltag. Bestimmte Funktionen fehlen jedoch noch, wie etwa das Filtern der Dateinamen anhand regulärer Ausdrücke. Während auf der Kommandozeile die Kombination aus den Kommandos find und grep zum Erfolg führt, unterstützen der Midnight Commander, Vfu und Vifm bisher Muster nur rudimentär.
Ähnliches gilt für das Durchsuchen anhand von Größenspannen. Hier bietet neben Find mit der Option -size und Grep nur noch Gt5 eine Option, mit der Sie kleine Dateien aus einer Ansicht ausblenden (bis maximal 30 Prozent Größenanteil am Volumen des Verzeichnisses).
Für eine Recherche anhand des Zeitstempels der letzten Änderung glänzt ls mit der Option -t, ebenso helfen in diesem Fall der Midnight Commander und JDiskReport weiter. JDiskReport bietet eine Übersicht des Dateizugriffs mit den Kriterien heute, gestern und im letzten Monat. Nichtsdestotrotz gilt weiterhin: Das sichere Beherrschen der Grundlagen hilft bei Situationen, in denen die grafischen Werkzeuge nicht zur Verfügung stehen.
Glossar
-
Named Pipes
-
Benannte Pipes dienen der Kommunikation zwischen Prozessen, bei Bedarf auf verschiedenen Rechnern im Netzwerk. Sie ermöglichen es, in beide Richtungen Daten auszutauschen.
Infos
[] Die Autoren bedanken sich bei Jörg Schilling, Detlef Drewanz, Wolfram Schneider, Wolfram Eifler und Maximilian Techter für deren kritische Anmerkungen und Kommentare im Vorfeld dieses Artikels.
[1] Ncdu: http://dev.yorhel.nl/ncdu
[2] Gt5: http://gt5.sourceforge.net
[3] Midnight Commander: http://www.midnight-commander.org
[4] Vfu, http://cade.datamax.bg/vfu/
[5] Vifm, http://vifm.sourceforge.net
[6] Tdu: http://webonastick.com/tdu/
[7] Kdiskfree: Elisabeth Bauer, “Hinter den Kulissen”, EasyLinux 04/2009, http://www.easylinux.de/Artikel/ausgabe/2004/09/038-kde-tools/
[8] Kdiskfree: http://docs.kde.org/stable/en/kdeutils/kdf/main-window.html
[9] Treesize: http://treesize.sourceforge.net
[10] JDiskReport: http://www.jgoodies.com/freeware/jdiskreport/
[11] JDiskReport: Tim Schürmann, “Platz schaffen”, LinuxUser 04/2011, S. 70, https://www.linux-community.de/22929
[12] Filelight: http://www.methylblue.com/filelight/
[13] Baobab: http://www.marzocca.net/linux/baobab/
[14] Gdmap: http://gdmap.sourceforge.net/
[15] Kdirstat: http://kdirstat.sourceforge.net
[16] Xdu: http://sd.wareonearth.com/~phil/xdu/
[17] Xdiskusage: http://xdiskusage.sourceforge.net













