nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

Vergleichen von (sehr vielen) Dateien ...

Von: Bodo Schulz (b.schulz@sinnerschrader.de) [Profil]
Datum: 30.09.2009 14:27
Message-ID: <h9viqo$v0d$1@oemcomputer.oerks.de>
Followup-to: de.comp.os.unix.shell
Newsgroup: de.comp.os.unix.shell
Moin Moin!

Ich habe ein größeres Performanceproblem eines 'geerbten'
Bash-Scriptes.
Jaaaa, ich weiß durchaus, dass die Bash nicht gerade ein
Geschwindigkeitskünster ist, aber ich kann (und darf auch) nicht das ganze
neu machen. :(

Das eigentliche Problem ist wie folgt:
Ich habe 2 Verzeichnissbäume, die hauptsächlich .jsp Dateien
beinhalten.
Zur Zeit sind das ~15.000 Stück.
In Baum A fallen neue Dateien hinein, oder werden Dateien gelöscht.
Das Script vergleicht Baum A mit Baum B und muss für
geänderte Dateien (die
also in Baum B fehlen) "irgendwas" veranstalten.
Vor dem Vergleich wird mittels find eine entsprechende Variable mit allen
Dateien definiert:
,--------------------------------------------------------
len=$(( ${#dir} +2 ))
FILES="`find ${dir}/ -name "*.jsp" | cut -c ${len}-`"
`--------------------------------------------------------

Das Vergleichen sieht dann so aus:
,--------------------------------------------------------
for FILE in ${FILES}
do
f=`echo ${FILE##*/}`
d=`echo ${FILE%/*}`

if [ \( ${a}/${FILE} -ot ${b}/${FILE} \) -o \( ${a}/${FILE} -nt
${b}/${FILE} \) ]
then
# und hier kommt das gesummse ...
fi
done
`--------------------------------------------------------

Das dumme an dieser Geschichte ist halt, wenn die beiden Verzeichnissbäume
identisch sind, wird trotzdem die Schleife komplett durchgezogen.
Das kann dann schon mal bis zu 7 Minuten dauern, je nachdem, was sonst noch
auf der Kiste los ist ...

Ich würde das ganz gern etwas optimaler gestalten, beiss mir momentan aber
die Zähne aus. Wahrscheinlich seh ich den Wald vor lauter
Bäumen nicht mehr
:(

Vielleicht habt ihr ein paar Tipps für mich?

Gruß,
Bodo


[ Auf dieses Posting antworten ]

Antworten