Hilfe bitte für Konsole

Hallo

Ich hoffe ihr könnt mir weiterhelfen…bin Unix-Newbie…

Folgende Sachlage:

Nen Kumpel und ich haben nen gemagneten 1&1 Server (also nix Rootserver) eben WEIL wir uns nicht so auskennen.

Wir bieten darüber nur unsere eigenen Homepages an.

Nun kommt die Meldung HDD quote exteed. Sind aber nur 60 GB von 250 GB belegt.

Laut Hotline sind zuviele Dateien in der Anzahl auf dem Server.

NUR wir wisse nicht wo…1&1 sagt wir sollen die Unterverzeichnisse unserer Homepages überprüfen wo was drin ist.

Dof ist nur das Filezilla teils beim Auflisten der Verzeichnisse aussteigt. Auch der 1&! Dateiexplorer bringt nen Fehler.

Nun sollen wir unter SSH unter der Komsole das machen.

Ok komme mit Putty soweit rein, ABER WIE BITTE nun vorgehen?

Wir fragt man ab welches Verzeichnis welche Dateigrösse belegt und wieviele Dateien da drauf sind?

Und: Wie löscht man ganze Verzeichnisse die nicht leer sind?

Welche Befehle?

Der Server rennt seit 2003 und wir archieren auch Webcambilder und Wetterdaten drauf. Befürchte da hat sich einiges angesammelt aber wir bekommen das so nicht entrümpelt.

Habe schon rumgeooglet aber das sind für nen Windowsuser bömische Dörfer…

Danke Euch ganz lieb!

Verzeichniswechsel mit „cd“

Auflisten der Größe der Unterverzeichnisse

du -hs *|sort -h

Entfernen: am Besten erst mit „mv“ das Verzeichnis verschieben bzw. umbenennen, testen, ob alles noch funktioniert, und dann mit „rm -rf“ entfernen.

Hinter jeden Befehl (außer „du…“, das ist so vollständig) gehört natürlich noch der Datei- bzw. Verzeichnisname und wenn notwendig der Zielname.

Gruß, Lutz

und wieviele Dateien da drauf sind?

Es gibt leider keinen einfachen Befehl, der einen Überblick zulässt, in welchem Verzeichnis wie viele Dateien liegen. Du musst also, ausgehend vom Stammverzeichnis, Verzeichnis für Verzeichnis durchgehen und dann, wenn du einen Kandidaten gefunden hast, dieses Verzeichnis rekursiv durchgehen.

Es gibt zwar grafische Werkzeuge für diesen Zweck, aber die müsste man halt erst einmal installieren, und die funktionieren auch nicht in der Kommandozeile.

Mittels des Befehls find / -maxdepth 1 -type d [*1] bekommst du alle Verzeichnisse im Root-Verzeichnis angezeigt. Für dich wird interessanter sein, welche Verzeichnisse unterhalb deines home-Verzeichnisses liegen. Die bekommst du mit find ~ -maxdepth 1 -type d angezeigt.

Diese Liste gehst du nun Verzeichnis für Verzeichnis mit dem Befehl ls -R /pfad/zum/verzeichnis/ |wc durch [*2]. Als Ergebnis bekommst du drei Zahlen ausgegeben; die erste Zahl gibt dir einen Überblick, wieviele Dateien in diesem Verzeichnis und allen Unterverzeichnissen liegen. Diese Zahl ist nicht exakt, für deine Zwecke aber hinreichend.

Angenommen, du bekommst für den Ordner /home/user/webcambilder eine exorbitant hohe Zahl von z. B. ca. 100.000 Dateien angezeigt, unterhalb dieses Ordners ist aber wieder eine Reihe von Unterordnern, und du willst wissen, welcher von denen der Schuldige ist. Jetzt wiederholst du die beiden Schritte entspr. angepasst:
find /home/user/webcambilder -maxdepth 1 -type d
ls -R /home/user/webcambilder/unterverzeichnis_1 |wc
ls -R /home/user/webcambilder/unterverzeichnis_2 |wc
ls -R /home/user/webcambilder/unterverzeichnis_3 |wc

Auf diese Weise solltest du, wenn auch mit einiger Mühe, ermitteln können, in welchem Verzeichnis sich eine ungewöhnliche Vielzahl von Dateien befindet.

*1) der Slash / gibt an, auf welches Basisverzeichnis sich der Befehl find beziehen soll, -maxdepth 1 sorgt dafür, dass Unterverzeichnisse nicht berücksichtigt werden (sonst könnte das Ergebnis leicht unübersichtlich werden) und -type -d sagt, dass nur Verzeichnisse ausgegeben werden sollen

*2) ls listet die Dateien auf, -R sorgt dafür, dass Unterverzeichnisse berücksichtigt werden, das Pipe-Zeichen | übergibt diese Liste an den Befehl wc, und der schließlich zählt die Liste durch

HTH

Hallo,

Wir fragt man ab welches Verzeichnis welche Dateigrösse belegt
und wieviele Dateien da drauf sind?

Zuerst in das Verzeichnis wechseln, ab wo gesucht werden soll.
(cd / - also root - ist vielleicht ungünstig … )

Anzahl der Dateien (1-Zeiler):
ORDLIST="$(find -type d -printf ‚%p°‘)";IFS=°;for ORD in $ORDLIST;do echo -n "$ORD -> ";find $ORD -maxdepth 1 | wc -l;done

Größe der Ordner (1-Zeiler):
ORDLIST="$(find -type d -printf ‚%p°‘)";IFS=°;for ORD in $ORDLIST;do du -hs „$ORD“;done

Entfernen voller Ordner:
rm -r Ordner
VORSICHT!!! Weg ist weg.

Erklärung
ORDLIST="$(find -type d -printf ‚%p°‘)"
Erstellt eine Liste aller Ordner (rekursiv) ab dem Verzeichnis wo es aufgerufen wird. Der Trenner zwischen den einzelnen Ordnern wird das Zeichen °.
IFS=°. Das Bash-Trennzeichen wird von Leerzeichen zu °

Die Liste der Verzeichnisse wird anschließend verarbeitet.

Grüße
K.