shell oder scriptsprache mit rekursion

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

shell oder scriptsprache mit rekursion

Beitrag von alexatdebian » 13.09.2005 13:59:50

Hallo,

ich brauche für eine backuplösung die fähigkeit eines shell scripts (ich muss dateien verschieben, verzeichnisse auflisten etc) und gleichzeitig die möglichkeit von rekursiven funktionen.
mit der bash geht sowas (wenn man sich nur genügend bemüht), der code ist aber nicht lesbar. ausserdem hab ich gelesen dass ab einem kritischen rekursionslevel die scripte crashen.
das das ganze für eine backuplösung sein soll brauch ich was stabiles.
meine frage: gibt es da ne gute lösung?
es muss nicht zum sdandard gehören (mir fällt da z.B. die xsh ein, die erlaubt xml dateien komfortabel zu editieren und gleichzeitig üblicheshell befehle zulässt). es muss aber (is ja eigentlich klar) ohne graphischen desktop und 100.000 ungewöhnliche bibliotheken auskommen.


meine backuplösung sieht so aus (vielleicht gibts auch dazu kommentare):

1) ein unison (unidirektional) erstellt nen spiegel auf dem raid system
2) ein script geht durch und mv .svn .svn_user sowie mv .svn_backup .svn damit ich nicht in konflikt mit evtl. vorhandenen svn verzeichnissen des users komme
3) hier mein script mit rekursion: gehe durch die verzzeichnisse, add für alle dateien wenn nicht ausgeschlossen (siehe unten)
4)svn commit
5)mv .svn .svn_backup

verzeichnisse ausschliessen:
.ignore ignoriert alle dateien im aktuellen verzeichnis
.ignore_rec ignoriert rekursiv
.add
.add_rec
d.h. wenn der user nix angibt gehen die dateien ins backup
die kombination .ignore_rec und dann .add oder .add_rec erlaubt in der verzeichnisshirarchie bestimmte bereiche vom backup auszuschliessen.

da svn binär inkrementell arbeitet ist das für mich das ideale backupsystem. zumal ich die möglichkeit des branchen habe und so die volle flexibilität.
die dump und dumpfilter befehle von svn erlauben mir z.B. aus der history bestimmte bereiche loszuwerden, damit das repository nicht zu gross wird. also z.B. alle history die älter als 1.5 jahre ist könnte man z.B. rauswerfen und auf band sichern etc.


was meint ihr? gibts schwachstellen, punkte die ich übersehe?

danke
alex

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 13.09.2005 17:23:16

Die Bash bietet auch Shell-Funktionen an, die rekursiv und ohne Begrenzung der Rekursionstiefe verwendet werden können. Wie bei jeder anderen Programmiersprache führt aber auch hier ein voller Stack zu einem Programmabsturz.

Ein "nicht lesbarer Code" ist auch nicht umbedingt gottgegeben. Die Bash verfügt über alle Kontrollstrukturen, wie sie bei Hochsprachen der zweiten Generation üblich sind.

Gruß
gms

alexatdebian
Beiträge: 117
Registriert: 19.07.2004 18:17:42

Beitrag von alexatdebian » 13.09.2005 18:07:16

hatte nur nen beispielcode überflogen sah umständlich aus.
bin einer 'schlechten' website aufgesessen, hab inzwischen auch gelesen, dass die recursionstiefe nur durch den stack limitiert ist. das sollte ja reichen ;-)

da stand noch 'Be aware that recursion is resource-intensive and executes slowly, and is therefore generally not appropriate to use in a script'. deshalb wollte ich mal wissen ob es eine 'standard' umgebung für rekursive scripts gibt.

habe zwischenzeitlich überlegt ein perl script zu schreiben, da man dort ja so nette string - editier möglichkeiten hat [ja, kann man alles mit awk auch machen, weiss ich].

hat jemand mit per-scripten erfahrung - ist das ok oder eher abzuraten?

Antworten