Schönheitsfehler im Backupscript

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Cassadi
Beiträge: 135
Registriert: 19.03.2005 12:58:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Schönheitsfehler im Backupscript

Beitrag von Cassadi » 14.01.2008 19:00:22

Hallo edle Coder,

ich habe mal mein Backupscript ein wenig weiter verfeinertt. Mailfunktionen, Sicherheitsabfragen und Backuprotate eingebaut. Es funktioniert alles hervorragend bis auf einen Schönheitsfehler, welchen ich beim besten Willen nicht wegbekomme/finde.

Es soll nach 30 Tagen (das Script läuft per Anacron 1x täglich, also richtger müsste es heissen nach 30 Aufrufen) der Inhalt des Backupverzeichnisses verschoben werden (also backup-001.tgz - backup-030.tgz) und ein neues Vollbackup im "alten Backupverzeichniss angelegt werden.

Nun es klappt hervorragend. Alles wird wie gewollt verschoben nur das neue Vollbackup beginnt dann nicht wie es soll mit backup-001.tgz sondern mit backup-000.tgz. Das bedeutet das ab dem ersten Rotate immer 31 anstatt 30 Dateien verschoben werden. Ist soweit ja kein Beinbruch, jedoch nervt es mich und viel mehr noch nervt es mich das ich den Fehler nicht finden und lösen kann.

Ich habe das Script mal hier hin gepastet. http://nopaste.debianforum.de/7298

Vieleicht findet jemand den Fehler und kann mir behilflich sein. Auch wenn der Code funktioniert, kann natürlich überflüssiges entfernt / verbessertwerden. Ich habe nicht wirkliche Ahnung vom coden sondern bastel nur so für mich hin. Also wenn es was zu verbessern gibt, dann bitte ich auch da um Eure Hilfe.

Lieben Gruß
Cassadi
Ich würde gerne die Welt verbessern, doch Gott gibt mir den Quellcode nicht.
Märchenbasar - Tritt ein und lasse dich verzaubern!

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

Beitrag von gms » 14.01.2008 22:11:19

Die Formatierung ist irgendwie von dem Script verloren gegangen :cry:

Also, in Zeile 37 bis 42, also beim Starten des Scripts, wird die Variable "backupnr" ermittelt , in Zeile 103 bis 108, also gleich nach dem Verschieben, wird diese Variable nochmals ermittelt.
In der Zeile 45 hast du ein "$[backupnr++]" und erhöhst damit diese gefundene Nummer um 1, daher beginnst du hier auch mit 1
Nach der Zeile 108 erhöhst du die Nummer jedoch nicht, daher wird das erste Backup nach dem Verschieben mit 0 angelegt.
Eigentlich könntest du auch die Zeilen 103-108 durch

Code: Alles auswählen

backupnr=1
ersetzen

Gruß
gms

Cologne4711
Beiträge: 260
Registriert: 04.12.2006 11:37:59

Beitrag von Cologne4711 » 14.01.2008 22:33:04

Hallo,

mir gefällt das Skript nicht, wobei ja auch jeder seine eigene Art zu schreiben hat ...

Zeile 13 - 34 kannst Du löschen. Die ergeben meiner Meinung nach keinen Sinn.

ein einfaches mkdir -p ${BACKUPDIR} macht das gleiche.
Das gilt später für die anderen Zeilen auch.

date +%d-%m-%Y-%H:%M würde ich als Variable definieren

Wenn das ganze dann noch in Funktionen wäre, würde es auch etwas übersichtlicher wirken.

MfG

Benutzeravatar
Cassadi
Beiträge: 135
Registriert: 19.03.2005 12:58:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von Cassadi » 14.01.2008 22:45:28

Hallo gms,


cool das isses. Ich danke dir recht herzlich. Der doppelte Kram 103 -108 ist raus und es wird nur die 1 vorgegeben. Somit gehts wieder voll mit 001 los.

Danke nochmals

Cassadi
Ich würde gerne die Welt verbessern, doch Gott gibt mir den Quellcode nicht.
Märchenbasar - Tritt ein und lasse dich verzaubern!

Benutzeravatar
Cassadi
Beiträge: 135
Registriert: 19.03.2005 12:58:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von Cassadi » 14.01.2008 22:58:34

Hallo Cologne4711,

jo naja ich muss sagen ich habe vom Coden ja auch nicht wirklich Ahnung. Ich fummel eben einfach so lange bis es klappt, von daher sieht der Code sicher für Profis total versaut aus. Macht nichts ich will ja keinen preis gewinnen.

Zeile 13 -34 habe ich gemacht damit eben das Verzeichniss angelegt wird wenn es nicht vorhanden ist. Die 2. Abfrage dient dazu ob es wirklich angelegt wurde. Kann ja auch nen Fehler auftreten.

Mit mkdir -p kam ich beim Rotateverzeichniss ins Schleudern, weil er ja damit das nach dem ersten Rotate erzeugte rotate nchmal versuchen würde anzulegen, was mit Fehler ..ist schon vorhanden .. quitiert wird. Daher eben die "umständliche, aber fehlerfreie Variante.

Datum in eine Variable zu packen finde ich gut und werde ich machen. Sieht besser aus da gebe ich dir recht.

Danke für die Tips
Cassadi
Ich würde gerne die Welt verbessern, doch Gott gibt mir den Quellcode nicht.
Märchenbasar - Tritt ein und lasse dich verzaubern!

Cologne4711
Beiträge: 260
Registriert: 04.12.2006 11:37:59

Beitrag von Cologne4711 » 15.01.2008 09:10:36

Hallo,
Zeile 13 -34 habe ich gemacht damit eben das Verzeichniss angelegt wird wenn es nicht vorhanden ist. Die 2. Abfrage dient dazu ob es wirklich angelegt wurde. Kann ja auch nen Fehler auftreten.
Bei mkdir -p kann doch nur dann ein Fehler auftreten, wenn die Person oder das Skript nicht die entsprechenden Berechtigungen hat. Ansonsten wird das Verzeichnis erstellt.
Mit mkdir -p kam ich beim Rotateverzeichniss ins Schleudern, weil er ja damit das nach dem ersten Rotate erzeugte rotate nchmal versuchen würde anzulegen, was mit Fehler ..ist schon vorhanden .. quitiert wird.
mkdir -p sollte keine Fehlermeldung erzeugen, wenn das Verzeichnis schon existiert.

Also ich würde das noch einmal ausprobieren - dadurch wird Dein Skript kürzer, übersichtlicher und du kannst Dir zwei unnötige Mails sparen.

MfG

Benutzeravatar
Cassadi
Beiträge: 135
Registriert: 19.03.2005 12:58:33
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von Cassadi » 15.01.2008 17:28:22

Hiho Cologne4711

Ja ich habe es nochmal getestet und das ganze geht doch ohne Fehlermeldung. War wohl irgendwo nen Zeichen vergessen oder wie auch immer. Ich konnte nun ganze 20 Zeilen einsparen. Sicher noch irgendwo Verbesserungspotential.

Hier mal die Neufassung:
http://nopaste.debianforum.de/7303

LG
Cassadi
Ich würde gerne die Welt verbessern, doch Gott gibt mir den Quellcode nicht.
Märchenbasar - Tritt ein und lasse dich verzaubern!

Antworten