MySql Backup mit Datum als Verzeichnisname

pitko

New Member
Hallo zusammen,

ich habe hier einen kleinen Server für die Familie, bisher lief der unter Suse 11.2
Nun habe ich auf Linux Mint 17.1 umgestellt und habe ein Problem mit dem cronjob, der ein tägliches Datenbankbackup machen soll.
unter Suse hatte ich das anzulegende Verzeichnis mit /pfad/%Y-%m-%d
angegeben und es wurde ein Verzeichnis im Stil /pfad/2014-12-15 erstellt.
Unter Mint wird zwar auch ein Verzeichnis angelegt und die MySQL Dumps darin abgelegt, allerdings heißt das Verzeichnis %Y-%m-%d und nicht 2015-01-31

Wie lautet denn die korrekte Syntax für das Datum ?

Da ich mit bash und bin und auch mit der Kommandozeile wenig anfangen kann, administriere ich immer mit webmin.

Bin für jeden Hinweis Dankbar

pitko
 

elias5000

Site Reliability Engineer
Poste mal bitte die exakte Zeile, wie sie in der Crontab steht.

In der Crontab muss man ggf. die % escapen. Also /pfad/zum/backup-$(date +\%Y-\%m-\%d) statt /pfad/zum/backup-$(date +%Y-%m-%d).
 

pitko

New Member
Ich kann die nur die Zeilen schicken, wie ich sie im Webmin eingegeben habe...

Beim MySQL Server unter Backupdatenbank bei Backup zum Verzeichnis:
/Sicherung/backup/(date+ %Y-%m-%d)

Im Cron Auftrag von Webmin => System - geplante Aufträge (cron)
steht dann der Befehl:
/etc/webmin/mysql/backup.pl --all

=> escapen funktioniert nicht, ohne Klammer und ohne "date+" geht auch nicht,
es wird immer das Verzeichnis so angelegt, wie es eingegeben wurde.

Die backups werden ja zum jeweiligen zeitpunkt durchgeführt, nur der Verzeichnisname wird nicht umgesetzt.

Danke für Deine Hilfe.
 

pitko

New Member
Klappt leider auch nicht:
Folgende Zeile wird ausgegeben:
600588 Bytes erfolgreich aus der Datenbank xyz in Datei /pfad/pfad/(date+%Y-%m-%d)/xyz.sql gesichert.

Und so heißt auch das Verzeichnis mal wieder (date+%Y-%m-%d) ...

Danke für die Unterstützung
 

elias5000

Site Reliability Engineer
"date" ist ein CLI-Befehl. Es muss also mindestens ein Leerzeichen danach stehen.
Die Klammern wundern mich auch. Wenn das von Webmin in einem Script-Kontext benutzt werden soll, dann müsste es $(cmd) benutzen um einen Befehl auszuführen und seine Rückgabe in die Zeichenkette einzufügen und nicht ().

Außer in dem Fall, dass Webmin da seine eigene Syntax benutzt und das später in das umsetzt, was wirklich ausgeführt werden soll, müsste der Pfad also so aussehen:
Code:
/pfad/pfad/$(date +%Y-%m-%d)/xyz.sql
Beachte das Leerzeichen zwischen date und dem +.
 

pitko

New Member
Es ist unglaublich, dass es bei SUSE11.2 so problemlos mit /pfad/%Y-%m-%d
funktioniert hat und hier können wir probieren, was wir wollen und es klappt
einfach nicht.
/pfad/$(date +%Y-%m-%d)
/pfad/(date +%Y-%m-%d)
/pfad/$date +%Y-%m-%d
...
ich hab dann bald alle Varianten durch und es will einfach nicht klappen.
 

DeaD_EyE

Blog Benutzer
Sehr komisch. Schreib die Zeile doch mal in ein Script mit dem Shebang #!/bin/bash in eine Datei, mach sie ausführbar und lass den Cronjob dann das Script ausführen. Das sollte auch jeden Fall gehen.
 

pitko

New Member
@DeaD_EyE
und hier beginnen dann die richtigen Probleme: "Shebang #!/bin/bash"

Ich kann den Editor aufrufen, ein Script schreiben, abspeichern und mit Webmin
dieses Script dann per Cronjob aufrufen.
Nur die Inhalte und das korrekte Verzeichniss zum Ablegen des Scripts sollte
mir Schritt für Schritt vorgegeben werden, da ich davon keine Ahnung habe
und diese Dinge eben deshalb mit Webmin erledige.
 

elias5000

Site Reliability Engineer
[...] da ich davon keine Ahnung habe
und diese Dinge eben deshalb mit Webmin erledige.
Webmin ist nur ein Werkzeug. Es ist kein Ersatz dafür, sich mit dem, was man da tut, wirklich auszukennen bzw. auseinanderzusetzen.
 

pitko

New Member
Natürlich hast Du Recht, kein Thema!
Und gerade weil ich mich nicht auskenne, frage ich hier nach und versuche mich
mit Eurer Hilfe an der Lösung, da sich offensichtlich zum bisherigen Ablauf etwas geändert hat.

Das ich mich mit der Konsole nicht auskenne, hab ich im ersten Beitrag geschrieben und soll nicht heißen, dass ich mich nicht mit dem Problem auseinandersetze. Dies mache ich eben mit dem Werkzeug webmin. Dafür sind Werkzeuge doch schließlich da.

Aber vielleicht schaffe ich es mit Hilfestellung ja noch über ein Script...
Ich schreibe also ein Script mit einem beliebigen Namen,
z.B. datensicherung.sh
1. Zeile: #!/bin/bash

wie bringe ich dann die Befehlskombinationen zum Pfad der Sicherungsdatei und den Aufruf des Backupbefehls als solchen

/pfad/pfad/$(date +%Y-%m-%d)
/etc/webmin/mysql/backup.pl --all

ein?

Kann ich mit diesem Script überhaupt auf das /etc/webmin/mysql/backup.pl --all
zurückgreifen?
 

pitko

New Member
Es klappt! mit /pfad/%Y-%m-%d

In der Modulkonfiguration war die strftime nicht gesetzt.

Danke für die Unterstützung

peko
 

Attachments

Top