Inhalte:
Wie kannst du große Dateien in Linux finden?
Dieser Frage gehen wir hier nach.
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?
Dann gäbe es ja noch das NCDU-Paket, welches dir grafisch auflistet, wo viel Speicher genutzt wird. Aber auch hier hat man das Problem dass man nicht mehrere Dateien innerhalb verschiedener Verzeichnisse sinnvoll vergleichen kann. Genau das ist ja unser Ziel: Wir möchten große Dateien in Linux finden und vergleichen können.
Deshalb habe ich hier ein kleines Script und einen Befehl, 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.
Du hast noch keinen Server für deine Websites? Sieh dir doch mal unsere Hosting-Lösungen an!
Per Befehl
Um die Dateien mit einem Befehl anzuzeigen, kann folgender Befehl verwendet werden:
find / -type f -size +50M | xargs ls -lhS | awk '{ print $5,$9 }'
Dieser Befehl würde nun alle Dateien auf dem System suchen, die größer als 50 MB sind.
Modifizieren wir den Befehl noch etwas, z.B. nach .tar.gz-Archiven zu suchen die entsprechende Größe haben:
find / -type f -size +50M -name *.tar.gz | xargs ls -lhS | awk '{ print $5,$9 }'
Alternativ kann auch einfach mittels des -not
-Parameters nach Dateien gesucht werden, die kein Archiv sind:
find / -type f -size +50M -not -name *.tar.gz | xargs ls -lhS | awk '{ print $5,$9 }'
Per vollautomatischem Script
Datei anlegen
Legen wir eine neue Datei an und bearbeiten diese:
nano 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"
file="largeFiles.txt"
find $path -type f -size +${mb}M -exec du -h {} + | sort -h > $file
cat $file
lc=$( cat $file | wc -l )
echo "$lc Datei(en) wurde(n) gefunden. Abgelegt in $file"
Dies sollte dann wie folgt aussehen:
Speichern der findLargeFiles.sh
Die Datei speichern wir nun mit der Tastenkombination:
Strg + O
Daraufhin kommt folgende Meldung:
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
.
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: /
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!
Weitere Beiträge dieser Kategorie