Confixx Backup Cronjob

reptile

Registered User
Hallo,
ich habe vor mir einen Backup Cronjob für die SQL Datenbanken zu machen.
Die Idee ist, das jeden Tag um 8Uhr von allen Datenbanken ein komprimiertes Backup gemacht und gespeichert wird. Und zwar für jeden Tag einzeln, d.h. montag.sql.gz dienstag.sql.gz ...

Jetzt hab ich folgendes im Confixx unter Cronjob eingetragen:

Minute: 0
Stunde: 8
Tag im Monat: * (da jeden Tag)
Monat: * (da jeden Monat)
Wochentag: 1 (zum Beispiel beim Montags Cronjob)
Befehl: mysqldump -u<web0> -p<datenbankpasswort> db<usr_web0_1> | gzip > montag_usr_web0_1.sql.gz

Da ich den Befehl irgendwo im Internet gefunden habe, vermute ich mal das der Falsch ist oder?
 
Hallo,

hier Entwurf für ein Shell-Skript was etwas komfortabler ist aus dein Cronjob:

Code:
#!/bin/bash

datum=$(date +%d%m%Y)

# backup mysql

cd /

mysqldump --all-databases --password=[passwort] > /home/backup/mysql_dump_$datum.sql

# delete backups which where older than 14 days

cd /home/backup/

find mysql_dump_*.sql -mtime +14 -exec rm {} \;

Du mußt es nur etwas anpassen damit von jeder Datenbank ein einzelnes Dump erzeugt wird.

Gruss C.
 
Hm, erstmal danke. Leider weiß ich nicht was ein Shell Script ist und wie man das einfügt. Folglich weiß ich auch nicht wie ich das jetzt umschreibe...

Und wieso ist das konfortabler?
 
reptile said:
Und wieso ist das konfortabler?
Weil es das aktuelle Datum in den Dateinamen mit aufnimmt und Backups, die älter als 14 Tage sind löscht, damit die Platte nicht überläuft.

Shell-Script erstellen:
per Putty als root einloggen:
Code:
cd /root/bin
joe mysqlbackup.sh
# nun mit Copy&Paste den Inhalt einfügen
# (rechte Maustaste macht den Paste)
#[Strg]-X zum Speichern verwenden
chmod 700 mysqlbackup.sh
Nun kann es mit dem Befehl /root/bin/mysqlbackup.sh gestartet werden.

Das obige Script braucht das Root-Passwort und dumpt alle Datenbanken in eine Datei.
Änderung für nur eine (web1):
Code:
mysqldump -uweb1 -p[mysql-web1-passwort] usr_web1_0 > ...

huschi.
 
Hallo,
danke für die Erläuterung.
Wenn ich das Command:
joe mysqlbackup.sh
Eingebe dann kommt die Meldung: joe: command not found

Ich benutze Suse Linux 9.3 als Betriebssystem.

Die Backup Dateien werden dann einfach im /html/ ordner des jeweiligen web Users gespeichert oder?
 
reptile said:
Ich benutze Suse Linux 9.3 als Betriebssystem.
Dann nimmst Du halt einen anderen Editor. Z.B pico oder zur not vi.
Mach Dich beim vi aber vorher schlau, wie man ihn bedient... ;)

huschi.
 
Hallo,
zunächst einmal vielen Dank für eure nützlichen Beiträge.
Ich habs sogar mit vi hin bekommen das es funktioniert.
Aber das macht jetzt keine automatischen Backups oder?
Wie kann ich das so einstellen das es jeden Tag um 8Uhr früh ein Backup macht?
Muss ich da einen Cronjob im Confixx mit folgendem Befehl einfügen:
/root/bin/mysqlbackup.sh

??
 
reptile said:
Muss ich da einen Cronjob im Confixx mit folgendem Befehl einfügen:
/root/bin/mysqlbackup.sh
Zum Beispiel.

Oder mit "crontab -e". Wie Du willst. Du bist ein freier Mensch! ;)

huschi.
 
Hallo,
also das Script kann ich mit Putty ausführen.
Aber wenn ich das im Confixx als Cronjob eintrage dann wird es nicht ausgeführt.
Kann das daran liegen, das ich als web Nutzer ja die Zugriffsrechte auf das Verzeichnis gar nicht habe??

Ich hab als Einstellung:

Minute 0
Stunde 8
Tag im Monat *
Monat *
Wochentag *
Befehl /root/bin/mysqlbackup.sh bzw. crontab -e

Ich hab das jetzt mit der derzeitigen Zeit ein paar mal getestet, also kurz bevor es halb 11 wurde usw... Also hab dann hald Stunde 22 Minute 30 eingetragen usw...
 
reptile said:
Kann das daran liegen, das ich als web Nutzer ja die Zugriffsrechte auf das Verzeichnis gar nicht habe??
Du mußt das Script ja auch nicht im /root/bin-Verzeichnis legen.

Wie ich oben schrieb: Du bist ein eigener Mensch. Du darfst eigene Entscheidungen treffen, wo und wie Du es ausführen willst.

Befehl /root/bin/mysqlbackup.sh bzw. crontab -e
Häää?
Mit "crontab -e" kannst Du das Script mit root-Rechten ausführen lassen.

huschi.
 
Ja das mit dem Verzeichnis ist mir klar, ich halt das aber für geeignet.

Muss ich dann als Befehl:
Code:
/root/bin/mysqlbackup.sh crontab -e

eingeben?

Ich hab die 2 Befehle einzeln gemacht.
Also in den einen Cronjob /root/bin/mysqlbackup.sh
und dann noch einen 2. Cronjob mit crontab -e
So wars falsch oder?
 
Achso gut also crontab -e ist nur zum eintragen von Hand da. Ich seh den Crontab da wirklich nirgends eingetragen.
Aber wenn ich crontab -e eingebe dann steht da eine Warnmeldung das ich diese Datei nicht editieren soll, ich soll die Master oder so editieren.

Also Confixx fügt den Cronjob wohl nicht ein.

Wenn ich per crontab -e editiere muss ich also folgende Zeile rein schreiben:

Code:
0 8 * * * /root/bin/mysqlbackup.sh

??

Dann hab ich noch ne Frage, ist es mit einem Befehl möglich die Dateien auch vorher noch zu komprimieren und komprimiert zu speichern? also gzip oder so?
 
reptile said:
Wenn ich per crontab -e editiere muss ich also folgende Zeile rein schreiben:
Du hast das Thema verstanden; das gibt ein Sternchen im Heft. ;)

ist es mit einem Befehl möglich die Dateien auch vorher noch zu komprimieren und komprimiert zu speichern?
Ja, statt der ">" setzt Du noch das ein (ohne "..."):
Code:
... | gzip > ...

huschi.
 
Jawoll jetzt funktioniert alles. Danke für deine Hilfe, die komprimierung hab ich auch hinbekommen. Hab den Cronjob über crontab -e eingefügt. Würd mich nur noch interessieren wieso das über Confixx nicht geht diesen Cronjob einzufügen. Der steht da einfach nicht drin, wenn ich das so eintrage??
 
reptile said:
Würd mich nur noch interessieren wieso das über Confixx nicht geht diesen Cronjob einzufügen.
Weil Du lediglich die crontab für root bearbeitet hast.
Um z.B. web1 seine crontab zu bearbeiten tippelst Du:
crontab -u web1 -e

huschi.
 
Ja dort waren meine Confixx Cronjobs auch nicht drin gestanden. Ist jetzt egal, hauptsache es funktioniert. Vielen Dank für eure Hilfe, der Thread kann geschlossen werden.
 
Back
Top