Wie finde ich heraus, welcher Ordner am schnellsten Speicherplatz verbraucht?

Wie finde ich heraus, welcher Ordner am schnellsten Speicherplatz verbraucht?

Ich verwende einen Linux-Server, den wir als freigegebenes Samba-Laufwerk verwenden. Seit gestern wird eines der freigegebenen Laufwerke plötzlich immer größer (~ 100 MB alle zehn Minuten). Auf diesem freigegebenen Laufwerk befinden sich zu viele Ordner und Unterordner. Jetzt ist auf dem freigegebenen Laufwerk nicht mehr genügend Speicherplatz vorhanden.

Bitte helfen Sie mir, herauszufinden, welcher Ordner größer wird. Ich habe den folgenden Befehl ausprobiert, um die Größe der Unterverzeichnisse des freigegebenen Laufwerks zu ermitteln. Aber ich muss die Ausgabe vergleichen und es dauert zu lange, sie herauszufinden, wenn ich kein Glück habe.

du -sh --maxdepth=1  

Können Sie mir bitte einen Tipp geben, ob es eine andere Möglichkeit gibt, die Datentransaktion in diesem Dateisystem zu finden?

Antwort1

Suchen Sie mit dem folgenden Befehl nach kürzlich geänderten Dateien. Es werden die Dateien angezeigt, die in den letzten zehn Minuten im Ordner geändert wurden. Erhöhen Sie den Parameter -mmin -10, um zu sehen, wie der Ordner im Laufe der Zeit geändert wurde. SieheMann findenund suchen-mZeitUnd-mminfür alle Einzelheiten:

sudo find FOLDER -xdev -type f -mmin -10 -ls

Eine andere Situation ist, wenn gelöschte Dateien immer noch Speicherplatz belegen, der nicht wiederhergestellt werden kann, weil Prozesse sie noch verwenden. Identifizieren Sie in diesem Fall die Prozesse, die gelöschte Dateien verwenden, und beenden Sie sie, damit der Speicherplatz wiederhergestellt werden kann:

sudo lsof | grep deleted

Die Suche nach der Größe hilft hier nicht weiter, da viele kleine Dateien genauso viel oder mehr Speicherplatz beanspruchen können als eine große Datei. Überprüfen Sie auch die Inode-Nummern. So ermitteln Sie außerdem die Größe aller Ordner in FOLDER:

sudo find FOLDER -xdev -type d | xargs -I DIR du -sm DIR | sort -nk1

Antwort2

Sie können iotopein Tool ausprobieren, das Ihnen die I/O-Nutzung nach Prozessen anzeigt (mit anderen Worten, welche Top-Prozesse Ihre Festplatte verwenden), sodass Sie verfolgen können, welcher Prozess für den Speicherplatzverbrauch verantwortlich ist. Eine andere Möglichkeit ist die Verwendung von inotify(part of inotify-tools), das Verzeichnisse auf Änderungen überwachen kann.

Oder verwenden Sie es einfach duwie folgt.

Definieren Sie die folgenden Aliase:

alias big='du -ah . | sort -rh | head -20'
alias big-files='ls -1Rhs | sed -e "s/^ *//" | grep "^[0-9]" | sort -hr | head -n20'

Gehen Sie dann zu einem verdächtigen Ordner und führen Sie es aus, bigum die größten Dateien und Verzeichnisse im aktuellen Verzeichnis anzuzeigen. Oder führen Sie es aus, big-filesum die größten Dateien im aktuellen Ordner rekursiv anzuzeigen.

Hinweis: Damit es unter OSX/BSD ordnungsgemäß funktioniert (da sortes nicht über verfügt -h), installieren Sie es sortvon coreutilsoder entfernen Sie -hes von lsund verwenden Sie sort -nrstattdessen.

Antwort3

Normalerweise verwende ich es ncdu, um die Festplattenspeichernutzung zu untersuchen. Wenn Ihr immer größer werdender Ordner Ihr System oder den NCDU-Scan nicht blockiert, sollten Sie in der Lage sein, herauszufinden, welche Ordner ungewöhnlich groß erscheinen.

verwandte Informationen