
Ich versuche jeden Tag, die Tabelle meiner Datenbank mit mysqldump, screen und crontab zu sichern. Wenn ich nur ausführe mysqldump
, wird der Speicherauszug korrekt erstellt, aber wenn ich es über mache screen
, ist die Ausgabedatei leer.
Crontab bearbeiten
crontab -e
Befehl hinzufügen
0 0 * * * screen -dmS MYDATABASE_MYTABLE_backup mysqldump -u MYUSERNAME -pMYPASSWORD -h MYHOSTNAME MYDATABASE MYTABLE --compress | gzip > /root/backup/database/MYDATABASE_MYTABLE_`date +\%Y-\%m-\%d`.sql.gz
Antwort1
Ich bin mir nicht ganz sicher, was Sie in diesem Szenario mit screen erreichen wollen und warum es überhaupt benötigt wird. Aber Sie leiten (mit | .. > ) die Ausgabe von screen an die Dump-Datei weiter, nicht die Ausgabe des Programms, das in screen läuft. Sie müssen entweder das komplette Kommando in Anführungszeichen setzen - oder es ist wahrscheinlich besser, das Kommando in eine Skriptdatei zu schreiben und stattdessen einfach das Skript aufzurufen.
meinscript.sh:
#!/bin/sh
mysqldump -u MYUSERNAME -pMYPASSWORD -h MYHOSTNAME MYDATABASE MYTABLE --compress | gzip > /root/backup/database/MYDATABASE_MYTABLE_`date +\%Y-\%m-\%d`.sql.gz
Bildschirm -dmS MYDATABASE_MYTABLE_backup myscript.sh