blog

09 Okt 2020
dateigröße

Wie Sie einfach große Dateien auf Linux-Systemen finden

Wer kennt es nicht: Der Speicher ist voll. Ob nun auf dem PC oder einem Server, überall kann dies leicht passieren. Aber welche Dateien sind nun die, die den Speicher so zumüllen?

Gerade auf Linux-Systemen ist das nicht so leicht herauszufinden. Natürlich könnte man mit du -h <pfad> nachschauen, wie groß einzelne Dateien sind. Aber das ist ein bisschen viel Aufwand für ein ganzes Betriebssystem, oder?

Deshalb habe ich hier ein kleines Script, mit dem man die Übeltäter identifizieren und die großen Dateien auf Linux finden kann.

Das gesamte Tutorial läuft auf Bash-Ebene ab. Also logge dich bitte einmal im Terminal (oder via SSH) ein.

Datei anlegen

Nun legen wir eine neue Datei an und bearbeiten diese:

nano findLargeFiles.sh
Anlegen findLargeFiles.sh
Anlegen findLargeFiles.sh

findLargeFiles.sh bearbeiten

Dort fügst du folgenden Code ein:

#!/bin/bash
echo -n "Ab wieviel MB soll gesucht werden?: "
read mb
echo -n "In welchem Pfad soll gesucht werden?: "
read path

if [[ ! -d $path ]]; then
        echo "Der Pfad $path existiert nicht!"
        exit 1
fi
 
echo "Suche in $path mit mehr als $mb""M"
if [[ -f "largeFiles.txt" ]]; then
        $( rm largeFiles.txt )
fi
ld=$( find $path -type f -size +$mb"M" -exec ls -lh --block-size=M {} \; | awk {'print $5": " $9'} )
while IFS= read -r line; do
        ln=$(echo $line | cut -f 1 -d ":" | sed s/.$//)
        ln+=" M -->"
        ln+=$(echo $line | cut -f 2 -d ":")
        echo $ln >> largeFiles.txt
done <<< "$ld"
 
sort -k1 -n largeFiles.txt -o largeFiles.txt
cat largeFiles.txt
lines=$( cat largeFiles.txt | wc -l )
echo "Gefundene Dateien: $lines, geschrieben in largeFiles.txt"

Dies sollte dann wie folgt aussehen:

Bearbeiten der findLargeFiles.sh
Bearbeiten der findLargeFiles.sh

Speichern der findLargeFiles.sh

Die Datei speichern wir nun mit der Tastenkombination:

Strg + O

Daraufhin kommt folgende Meldung:

Speichern der findLargeFiles.sh
Speichern der findLargeFiles.sh

Dies bestätigen wir mit ENTER.

Nun schließen wir den NANO-Editor mit Strg + X.


findLargeFiles.sh ausführbar machen

Damit die Datei auch ausgeführt werden kann machen wir sie mit folgendem Befehl ausführbar:

chmod +x findLargeFiles.sh

Datei ausführen

Nun können wir die Datei ausführen:

./findLargeFiles.sh

Man wird nun gefragt, ab wieviel MB man suchen möchte. Hier ist die Minimalgröße gemeint, ab der Dateien gefunden werden.

Es empfiehlt sich, nicht unter 100MB zu gehen um die Dauer des Vorgangs nicht ins unermessliche zu treiben.

Gib nun deinen Schwellwert ein, ich nutze in diesem Fall 100.

Minimalgröße der zu suchenden Dateien
Minimalgröße der zu suchenden Dateien

Bestätigen wir das mit ENTER.

Nun wird man noch nach einem Suchpfad gefragt.
Um wirklich alle Dateien zu prüfen, gib das Rootverzeichnis an: /

Quellpfad der zu suchenden Dateien
Quellpfad der zu suchenden Dateien

Auch dies kann man mit ENTER bestätigen.

Die Suche beginnt nun.
Sie kann, je nach Größe des Systems, einige Zeit in Anspruch nehmen!

Während der Suche können verschiedene Fehlermeldungen auftreten, z.B. folgende:

find: ‘/root’: Permission denied

Diese kannst du jedoch getrost ignorieren. Das heißt lediglich, dass in diesem Pfad nicht gesucht werden kann.

Nach dem Durchlauf des Scripts werden dir die ganzen Dateien aufgelistet, die größer als dein angegebener Schwellwert (in meinem Fall 100 MB) sind.

Solltest du nach Schließen des Terminals nochmal auf die Auflistung zugreifen wollen findest du eine Datei largeFiles.txt im gleichen Verzeichnis wie die findLargeFiles.sh.

Bitte sei Vorsichtig beim Löschen der Dateien, da je nach Suchpfad auch Systemrelevante Dateien aufgelistet werden!

Fabian Heinz

Fabian Heinz beschäftigt sich seit mehreren Jahren mit Webdesign. Zuerst war es nur ein Hobby – jetzt ist es sein Beruf. Als staatlich geprüfter Wirtschaftsinformatiker kennt er sämtliche Zusammenhänge der Technik und überzeugt durch sowohl Theorie- als auch Praxiswissen. Mit viel Leidenschaft ist er bei der Arbeit und zeigt, dass der Beruf auch seine Berufung ist.

Schreibe einen Kommentar