[gelöst] crontab: Datenbank mit Zeitstempel sichern

Debian macht sich hervorragend als Web- und Mailserver. Schau auch in den " Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
B52
Beiträge: 428
Registriert: 07.08.2011 12:35:02
Wohnort: Bern (CH)
Kontaktdaten:

[gelöst] crontab: Datenbank mit Zeitstempel sichern

Beitrag von B52 » 26.07.2023 10:08:52

Hallo Community

Ich versuche per crontab meine Datenbank regelmässig zu sichern:

Code: Alles auswählen

# crontab -e
danach tippe ich:

Code: Alles auswählen

# DB alle 5 Minuten sichern, Zeitstempel hinzufügen
*/5 * * * *     mysqldump --all-databases --single-transaction --quick --lock-tables=false > /opt/dbfull_`date +"%Y-%m-%d_%H-%M"`.sql
#
ein und starte den Dienst neu:

Code: Alles auswählen

/etc/init.d/cron restart
Leider funktioniert das irgendwie nicht, und ich bekomme keinen output unter /opt

Führe ich den Befehl manuell aus, klappt alles:

Code: Alles auswählen

# mysqldump --all-databases --single-transaction --quick --lock-tables=false > /opt/dbfull_`date +"%Y-%m-%d_%H-%M"`.sql
root@worldoflinux:/opt# ls
dbfull_2023-07-26_09-59.sql
Warum wird der Zeitstempel beim crontab nicht übernommen, bei der manuellen Eingabejedoch schon?

PS: mir ist bewusst, dass eine Sicherung alle 5 min sinnlos ist. Dies dient nur zur Übung!
Zuletzt geändert von B52 am 26.07.2023 11:13:19, insgesamt 1-mal geändert.
«Der Vorteil der Klugheit besteht darin,
dass man sich dumm stellen kann.
Das Gegenteil ist schon schwieriger.»
(Kurt Tucholsky)

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: crontab: Datenbank mit Zeitstempel sichern

Beitrag von JTH » 26.07.2023 10:12:46

B52 hat geschrieben: ↑ zum Beitrag ↑
26.07.2023 10:08:52

Code: Alles auswählen

[...]`date +"%Y-%m-%d_%H-%M"`.sql
Das kann so noch nicht funktionieren, es fehlen vermutlich ein paar Backslashes:
man crontab.5 hat geschrieben: Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

Re: crontab: Datenbank mit Zeitstempel sichern

Beitrag von MSfree » 26.07.2023 10:15:26

B52 hat geschrieben: ↑ zum Beitrag ↑
26.07.2023 10:08:52

Code: Alles auswählen

*/5 * * * *     mysqldump --all-databases --single-transaction --quick --lock-tables=false > /opt/dbfull_`date +"%Y-%m-%d_%H-%M"`.sql
Und mit

Code: Alles auswählen

*/5 * * * *     /usr/bin/mysqldump --all-databases --single-transaction --quick --lock-tables=false > /opt/dbfull_`date +"%Y-%m-%d_%H-%M"`.sql
funktioneirt es nicht?
ein und starte den Dienst neu:

Code: Alles auswählen

/etc/init.d/cron restart
Überflüssig. cron merkt, wenn man die crontab geändert hat.

Benutzeravatar
B52
Beiträge: 428
Registriert: 07.08.2011 12:35:02
Wohnort: Bern (CH)
Kontaktdaten:

Re: crontab: Datenbank mit Zeitstempel sichern

Beitrag von B52 » 26.07.2023 10:28:58

MSfree hat geschrieben: ↑ zum Beitrag ↑
26.07.2023 10:15:26
Und mit

Code: Alles auswählen

*/5 * * * *     /usr/bin/mysqldump --all-databases --single-transaction --quick --lock-tables=false > /opt/dbfull_`date +"%Y-%m-%d_%H-%M"`.sql
funktioneirt es nicht?
Nein, geht ebenfalls nicht, manuell jedoch schon.
«Der Vorteil der Klugheit besteht darin,
dass man sich dumm stellen kann.
Das Gegenteil ist schon schwieriger.»
(Kurt Tucholsky)

Benutzeravatar
oln
Beiträge: 487
Registriert: 05.01.2021 09:41:24

Re: crontab: Datenbank mit Zeitstempel sichern

Beitrag von oln » 26.07.2023 10:59:33

Moin,
bekommst du Fehlermeldungen ins Logfile?
Eigentlich sollte so etwas kommen:

Code: Alles auswählen

/bin/sh: -c: line 0: unexpected EOF while looking for matching ``'
So sollte es klappen:

Code: Alles auswählen

*/5 * * * *     /usr/bin/mysqldump --all-databases --single-transaction --quick --lock-tables=false > /opt/dbfull_$(date +"\%Y-\%m-\%d_\%H-\%M").sql
Gruß Ole
AbuseIPDB

Benutzeravatar
B52
Beiträge: 428
Registriert: 07.08.2011 12:35:02
Wohnort: Bern (CH)
Kontaktdaten:

Re: crontab: Datenbank mit Zeitstempel sichern

Beitrag von B52 » 26.07.2023 11:12:55

oln hat geschrieben: ↑ zum Beitrag ↑
26.07.2023 10:59:33
So sollte es klappen:

Code: Alles auswählen

*/5 * * * *     /usr/bin/mysqldump --all-databases --single-transaction --quick --lock-tables=false > /opt/dbfull_$(date +"\%Y-\%m-\%d_\%H-\%M").sql
Und das tut es auch, DANKE

PS/Nachtrag
JTH hat geschrieben: ↑ zum Beitrag ↑
26.07.2023 10:12:46
Das kann so noch nicht funktionieren, es fehlen vermutlich ein paar Backslashes:
da hattest du natürlich absolut recht. Da fehlten tatsächlich Backslashes! Hab das zuerst ignoriert, da die manuelle Eingabe ja geklappt hat.
«Der Vorteil der Klugheit besteht darin,
dass man sich dumm stellen kann.
Das Gegenteil ist schon schwieriger.»
(Kurt Tucholsky)

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: [gelöst] crontab: Datenbank mit Zeitstempel sichern

Beitrag von JTH » 26.07.2023 11:41:08

Jo, die fehlten. oln hat dann ja die daraus folgende, funktionierende Lösung gepostet ;)
Manchmal bekannt als Just (another) Terminal Hacker.

schwedenmann
Beiträge: 5529
Registriert: 30.12.2004 15:31:07
Wohnort: Wegberg

Re: [gelöst] crontab: Datenbank mit Zeitstempel sichern

Beitrag von schwedenmann » 26.07.2023 13:51:04

Hallo

Kleiner Nachtrag

anstatt mysql...... > /opt/alldb...

besser mysql.... -r /opt/alldb ....
https://janbrinkmann.de/mysqldump-utf-8-unicode/

mfg
schwedenmann

Antworten