Script für die Ordnergröße

FreeBSD, Gentoo, openSUSE, CentOS, Ubuntu, Debian
snowball
Posts: 218
Joined: 2004-09-15 10:14

Script für die Ordnergröße

Post by snowball » 2004-11-25 16:56

Hallo zusammen,
ich bin auf der Suche nach einem Befehl, mit dem ich mir die komplette Größe eines Ordners und der Unterordner !!schnell!! anzeigen lassen kann. Bis jetzt mache ich das mit 'du ordnername'. Da es aber insgesamt ca 35 Ordner mit einer Gesamtgröße von ungefähr 400GB sind, braucht das script für die Abarbeitung etwas mehr als eine Stunde...

Gibt es eine Befehl, den man statt 'du' nehmen kann? Oder vielleicht eine Variable, die solche Infos bereit hällt?

Danke schon mal für die Hilfe.

greets
jochen

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Script für die Ordnergröße

Post by alexander newald » 2004-11-25 17:21

nein

dukepyrolator
Posts: 38
Joined: 2004-03-12 06:51

Re: Script für die Ordnergröße

Post by dukepyrolator » 2004-11-26 16:13

for x in *; do du $x -h -s; done

wirsing
RSAC
Posts: 611
Joined: 2002-11-20 21:32
Location: Vaihingen und Karlsruhe

Re: Script für die Ordnergröße

Post by wirsing » 2004-11-26 16:15

Als ob das schneller wäre...

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Script für die Ordnergröße

Post by alexander newald » 2004-11-26 16:17

Das Problem ist wohl auch nicht du oder die Gesamtgrösse des Verzeichnisses, sondern wohl eher die grosse Anzahl der Dateien darin. Ich denke, es macht keinen grossen Unterschied, auf welche Art ich die Summe der Einzelgrössen erfasse - Der Flaschehals ist das Auslesen der Einzelinformationen aus dem Dateisystem, und das dauert halt immer gleich lang(e).

dukepyrolator
Posts: 38
Joined: 2004-03-12 06:51

Re: Script für die Ordnergröße

Post by dukepyrolator » 2004-11-26 16:20

Oh, da hab ich wohl die Frage nicht richtig gelesen oder falsch verstanden. ;)

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Script für die Ordnergröße

Post by snowball » 2004-11-26 16:21

Vielen Dank für die Antworten.
Schade eigentlich das es keinen schnelleren Befehl gibt.
Könnte es sein, das man das Problem mit einem anderen Dateisystem eingrenzen kann? Ich nutze im Moment ext3. Könnte reiser das vieleicht ein wenig beschleunigen?

greets
jochen

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Script für die Ordnergröße

Post by alexander newald » 2004-11-26 16:29

Keine Ahnung, wieviele Dateien sind es denn?

find -type f|wc -l
find -type d|wc -l

tally
Posts: 59
Joined: 2004-11-08 21:21

Re: Script für die Ordnergröße

Post by tally » 2004-11-26 16:40

@snowball

Du lieferst einfach viel zu wenig Daten:
- Für was brauchst Du die Größeninfos?
- Wie oft brauchst Du sie?
- Um welche Art von Dateien handelt es sich hauptsächlich?
- Wie oft ändern sich die Inhalte der Verzeichnisse?

tally

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Script für die Ordnergröße

Post by snowball » 2004-11-26 18:59

Code: Select all

find -type f|wc -l
2567459

Code: Select all

find -type d|wc -l
174867

Ok, sorry, ich dachte nicht, dass das von Bedeutung ist... Aber sicher... hier sind die Infos.
- Für was brauchst Du die Größeninfos?
Das ganze gehört zu einem Backup konzept. Mit Hilfe der Größe (und Anfangs und Endzeitpunkt) der Sicherungen wird eine Grafik erstellt, die eben auch die Größe der einzelnen Unterordner enthält. So kann man jeden Tag aktuell sehen, ob alle Server gesichert haben, oder ob es irgentwo Probleme gab. Bzw, ob sich viele Server von der Zeit her überschneiden und man die Zeiten noch optimieren kann.
- Wie oft brauchst Du sie?
1X pro Tag
- Um welche Art von Dateien handelt es sich hauptsächlich?
Um komlette Sicherungen anderer Server, die alle mit rsync in diesen Ordner sichern.
- Wie oft ändern sich die Inhalte der Verzeichnisse?
Tja, das hängt von den Servern ab. Ich schätze mal bei 400GB insgesamt... +-50GB pro Tag, aber das weiß ich erst ganz genau, wenn ich die Auswertung vernünftig hinbekommen habe :-(

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Script für die Ordnergröße

Post by alexander newald » 2004-11-26 19:27

Na ja, das wird nicht schneller gehen. Bei 2,5 Millionen Dateien sind das pro Stunde immer hin 750 pro Sekunde....

floschi
Userprojekt
Userprojekt
Posts: 3388
Joined: 2002-07-18 08:13
Location: München

Re: Script für die Ordnergröße

Post by floschi » 2004-11-26 20:32

Eine Möglichkeit:

Diesen Ordner auf eine eigene Partition legen und mittels df -h auslesen.

ffl
Userprojekt
Userprojekt
Posts: 269
Joined: 2002-10-23 08:28
Location: Karlsruhe

Re: Script für die Ordnergröße

Post by ffl » 2004-11-26 21:09

Oder keine EINZELNEN Dateien rsyncen sondern erst auf den Servern ein tar(.gz) packen und dann weg damit. Wäre m.E. besser, vor allem in Verbindung mit inkrementellem Backup oder so...

tally
Posts: 59
Joined: 2004-11-08 21:21

Re: Script für die Ordnergröße

Post by tally » 2004-11-26 21:24

snowball wrote: [...]
- Für was brauchst Du die Größeninfos?
Das ganze gehört zu einem Backup konzept. Mit Hilfe der Größe (und Anfangs und Endzeitpunkt) der Sicherungen wird eine Grafik erstellt, die eben auch die Größe der einzelnen Unterordner enthält. So kann man jeden Tag aktuell sehen, ob alle Server gesichert haben, oder ob es irgentwo Probleme gab. Bzw, ob sich viele Server von der Zeit her überschneiden und man die Zeiten noch optimieren kann.
[...]
So ganz verstehe ich das nicht. Wie erkenne ich an der Größe eines Dirs ob 'ne Sicherung geklappt hat? Oder fährst Du dann auf den gesicherten Servern auch noch ein "du" und vergleichst das dann?

Statistik/Log von rsync sind interessant. Wenn es nicht sehr viele Server sind lege ich für jeden 'ne eigene iptable Regel an und werte den Traffic je Server aus.

tally

kawfy
Posts: 307
Joined: 2002-08-08 23:45

Quota

Post by kawfy » 2004-11-26 22:01

:idea: Dein Backup-System kann doch die Quota-Daten der User abrufen, zusammen rechnen und sie anzeigen -- oder?

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Script für die Ordnergröße

Post by alexander newald » 2004-11-27 07:00

Mit

find -ctime -1

eine Dateiliste erstellen, die alle Dateien enthält, die innerhalb der letzten 24 Stunden geändert wurden. Diese Dateien dann sichern

Evtl. geht das schneller

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Script für die Ordnergröße

Post by snowball » 2004-11-27 11:54

@Alexander Newald
Na ja, das wird nicht schneller gehen. Bei 2,5 Millionen Dateien sind das pro Stunde immer hin 750 pro Sekunde...
Naja, du hast wahrscheinlich recht. Ich werde mich wohl an die lange Laufzeit gewöhnen müssen.

@olfi
Diesen Ordner auf eine eigene Partition legen und mittels df -h auslesen.
Die Idee ist gar nicht so schlecht. Werde ich mir überlegen ob das praktikabel ist. Danke für den Tipp.

@FFL
Oder keine EINZELNEN Dateien rsyncen sondern erst auf den Servern ein tar(.gz) packen und dann weg damit.
Hatte ich mir auch schon überlegt, aber das würde die Rechenleistung der einzelnen Server übersteigen. Außerdem habe ich so die Möglichkeit auch mal einzelne Dateien schnell wieder herzustellen, ohne das ich groß anfangen muss, alles erst zu entpacken.

@tally
Wie erkenne ich an der Größe eines Dirs ob 'ne Sicherung geklappt hat? Oder fährst Du dann auf den gesicherten Servern auch noch ein "du" und vergleichst das dann?
Nein. Am Anfang und Endzeitunkt der Sicherung werden die entsprechenden Zeiten In eine Datenbank geschrieben. Wenn ich dann bei der Auswertung sehen, das das Backup ca 2 Stunden gebraucht hat und 8GB auf dem Server sind, reicht mir das zumindest für die Grafische Darstellung der Sicherung. (Die Darstellung macht eine phpseite mit jpgantt).

@kawfy
Dein Backup-System kann doch die Quota-Daten der User abrufen, zusammen rechnen und sie anzeigen -- oder?
Nein, kann es nicht, es sind keine Quotas auf dem Server installiert. Außerdem sichern die Server nicht immer als ein Benutzer pro Server, sondern immer als der User, dem die Datei auch gehört.

@Alexander Newald
Mit
find -ctime -1
eine Datei liste erstellen, die alle Dateien enthält, die innerhalb der letzten 24 Stunden geändert wurden.
Die Idee ist sehr gut, vielen Dank. Aber bis jetzt bin ich ja noch bei der Auswertung der Daten. Evtl, werde ich das Backup Konzept dann demnächst über den Haufen werfen und neu anfangen.



Vielen Dank für die ganze Hilfe.
Jetzt werde ich schauen, was ich machen werde.

greets
Jochen

thorsten
RSAC
Posts: 732
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Script für die Ordnergröße

Post by thorsten » 2004-11-27 14:00

Ich will dir hiermit einmal ein paar Fragen stellen, die dir nicht unbedingt zu deiner Lösung verhelfen, ich hoffe das erweitert deine Sichtweise:

Die Sicherung der Daten ist trivial, aber eine Datensicherung ist nur dann sinnvoll und verdient ihren Namen, wenn die Rücksicherung funktioniert!

Läuft deine Rücksicherung zufriedenstellend und ist sie auch einfach zu bedienen?
Kann das jemand tun, auch wenn du nicht in der 4ma bist oder sogar plötzlich verstirbst?
(kein Witz, an sowas muss man denken, ich kenne da Stories...)

Ich präferiere Amanda für das Backup der Linux Maschinen (soll auch ohne tapelaufwerk zuverlässig funktionieren, siehe http://amanda.sourceforge.net/fom-serve/cache/191.html ).
Die neuen Versionen können auch Windowsfreigaben sichern.

Die Rücksicherung ist einfach genial, funktioniert wie ftp auf der Kommandozeile - sehr beeindruckend!
Einfach Server, Partition und das Datum setzen, dann kann man sich durch die Verzeichnisse hangeln, einige Verz. oder Dateien zur Rücksicherung markieren und auf los gehts los.

Bevor du also überprüfst, ob auch alle Dateien gesichert wurden und dich in graphischen 'Spielereien' verstrickst, spiel mal die Rücksicherung durch und arbeite deine Kollegen da ein.

HTH
Last edited by thorsten on 2004-11-27 14:49, edited 1 time in total.

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Script für die Ordnergröße

Post by snowball » 2004-11-27 14:33

Du hast schon recht mit deinen Fragen.

Ich werde mich gleich mal näher mit Amanda beschäftigen.

Nichts desto trotz, bin ich nicht der einzige Admin bei uns. Es ist immer sichergestellt das mindesten ein Admin Dienst hat, der auch weiß wie das Backup System funktioniert. Also von der Seite der Recovery ist alles geklärt.

Zu den graphischen 'Spielereien', wie du sie nennst, kann ich nur sagen: Wenn der Chef gerne jeden Tag eine aktuelle Grafik mit den Backup Zeiten hätte, muss ich mir halt auch um sowas Gedanken machen. Wie Sinnvoll das ist, lassen wir mal so im Raum stehen. Aber mal abgesehen davon, das die Idee von meinem Chef kam, finde ich so eine Ã?bersicht auch nicht schlecht, damit man auf einen Blick ein paar Wichtige Infos zum aktuellen Backup hat :oops:

greets
Jochen

alexander newald
Posts: 1117
Joined: 2002-09-27 00:54
Location: Hannover

Re: Script für die Ordnergröße

Post by alexander newald » 2004-11-27 14:45

Muss nur ein Backupsatz exestieren oder mehrere?

snowball
Posts: 218
Joined: 2004-09-15 10:14

Re: Script für die Ordnergröße

Post by snowball » 2004-11-27 14:48

Nur einer.
Jede Nacht wird in das gleiche Verzeichniss gesichert. Tagsüber wird dann das Verzeichniss auf ein Tape gesichert. So dass wir immer die letzten 14 Tage haben.

thorsten
RSAC
Posts: 732
Joined: 2003-02-01 13:14
Location: Fuldatal

Re: Script für die Ordnergröße

Post by thorsten » 2004-11-27 14:55

Das hört sich ja schonmal ganz gut an!
Dann könntest du ja u.U. amanda für die tägliche Sicherung auf das Band (wohl eher auf den Roboter ;-) nehmen.

Die 'graphischen Spielereien' sind natürlich wichtig, wenn sie dein Chef sehen will - ohne Brötchengeber macht die beste Backupstrategie keinen Sinn :lol:

Na dann viel Spass mit diesem riesigen Haufen an Dateien.
u.U. kannst du das Zählen der Ordnergrössen mit dem entsprechenden Dateisystem beschleungen. Ich denke da an Reiserfs oder ext3 mit der htree-Option: http://www.kubieziel.de/computer/hallow ... .html#ext3

Halt uns mal auf dem Laufenden!

kawfy
Posts: 307
Joined: 2002-08-08 23:45

ls -l pro Verzeichnis

Post by kawfy » 2004-11-27 20:37

:idea: Mache pro Tag folgendes:
Steige mit find(1) die Verzeichnisse durch ("find . -type d"), stelle mit "ls -l |head 1" bzw. einem Skript fest, wie groß die Dateien dort (und nur dort) sind und schreibe das in ein dotfile im Verzeichnis. Mit einem "nice" oder "sleep 1" im Skript kannst du den ganzen Vorgang lastmäßig abschwächen. Das erzeugt dann weniger Last als ein fettes du(1). Anschließend summiere die Zahlen aus den dotfiles auf.

Code: Select all

[Skript $HOME/bin/checkdirsize]
#!/bin/sh
ls -l $1| head -1 | cut -f 2 -d > $1/.checkdirsize

Code: Select all

[dein Cronjob für 03:05 Uhr tgl., /home/bla/bla kommt ins Backup]
THISTOBACKUP=/home/bla/bla
5 3 * * * /usr/bin/find $THISTOBACKUP -type d -exec $HOME/bin/checkdirsize {} ;
Am Ende steht in jedem Verzeichnis eine Datei .checkdirsize mit dem Platzverbrauch des Verzeichnisses ohne seine Unterverzeichnisse. Die Zahlen addierst du dann mit einem anderen Skript oder deiner Backup-Anwendung.