
Ich habe ein Skript zusammengestellt, um meine Datenbank auf einem gemeinsam genutzten Host zu sichern. Das Skript lautet wie folgt:
mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +%Y:%m:%d:%H:%M:%S).gz
Die Datenbankanmeldeinformationen werden in einer .cnf-Datei in /home/[Benutzer] gespeichert und der Verschlüsselungsschlüssel in der im Skript angezeigten Schlüsseldatei. Wenn ich dieses Skript über SSH ausführe, funktioniert alles ordnungsgemäß und es wird eine Sicherungsdatei erstellt. Der Cronjob, der jeden Tag ausgeführt werden soll, erstellt jedoch keine Dateien.
Irgendwelche Ideen?
Vielen Dank.
Antwort1
Verwenden Sie Folgendes, um den Cron-Job unter dem richtigen Benutzerkonto zu erstellen.
crontab -u <username> -e
Escapen Sie das % außerdem mit „\“.
mysqldump --databases [db1] [db2] | openssl aes-256-cbc -a -salt -pass file:/home/[user]/etc/.keys/.backup_key | gzip > /home/[user]/backup/$(date +\%Y:\%m:\%d:\%H:\%M:\%S).gz
Antwort2
Die Lösung, die ich gefunden habe, bestand darin, an den Anfang des Befehls Folgendes anzuhängen: cd /home/[Benutzer]/ && {Rest des Befehls}, da /home/[Benutzer]/ der Ort ist, an dem die MySQL-Anmeldeinformationen in einer .cnf-Datei gespeichert wurden, die mysqldump für den Dump benötigte. Ich habe gleichzeitig auch das „%“ maskiert, also hilft das vielleicht auch. Danke an @alex-atkinson für den Escape-Tipp.