Ich möchte ein Backup meiner machen /var/lib/mysql
und /var/www
Ordner und als tar.gz - Dateien auf dem montierten Netzwerk - Dateiserver (uslons001) speichern.
Hier ist meine Bash-Datei in: /bin/backups/mysqlbackup.sh
#!/bin/bash
mkdir /home/lv_admin/uslons001/`date +%d%m%y`
cd /home/lv_admin/uslons001/`date +%d%m%y`
tar -czf mysql.tar.gz /var/lib/mysql
tar -czf www.tar.gz /var/www
Das funktioniert einwandfrei, wenn ich es in einer Cmd-Shell ausführe, aber wenn ich den Cron-Job einrichte, wird es nie ausgeführt, sodass ich den Cron-Job nicht richtig einrichte. Mein Cron Job sieht so aus.
36 10 * * 5 /bin/backups/mysqlbackup.sh
..die Datei /var/log/cron.log enthält auch nichts, sodass keine Fehler protokolliert werden. (Auch nach dem Aktivieren der Cron-Protokollierung in der Datei /etc/syslog.conf
sudo chmod +x /etc/cron.weekly/mysqlbackup.sh
würde das Skript immer noch nicht wöchentlich ausführen lassen. Cron ignoriert Dateien mit Erweiterungen in diesen Verzeichnissen. Und im Allgemeinen sollten Skripte keine Erweiterungen haben./etc/crontab
,run-parts
wird verwendet, um die Jobs auszuführen,/etc/cron.{daily,weekly,monthly}
wenn anacron "nicht installiert" ist. run-parts (8) erklärt wiederum, welche Zeichen in den Dateinamen zulässig sind. Ich glaube, der Hauptgrund dafür ist, einen Job einfach durch Umbenennenjobname
injobname.disabled
oder ähnliches deaktivieren zu können .Der Wochentag ist ein numerisches Feld, daher schlägt er fehl, wenn versucht wird, 'fri' zu analysieren. Ändern Sie das auf 5 (Sonntag ist 0). Bearbeiten: Ich sehe, dass das OP aktualisiert wurde, um dies zu beheben, und es gibt immer noch Probleme, aber sie werden in anderen Antworten behandelt.
Das Cron-Format ist online gut dokumentiert, daher überprüfe ich normalerweise die Dokumente, bevor ich einen neuen Cron-Job schreibe: http://en.wikipedia.org/wiki/Cron
Stellen Sie außerdem sicher, dass Sie
crontab -e
Ihre Cron-Datei mit (oder ähnlichem) bearbeiten, um sicherzustellen, dass sie erneut analysiert wird.quelle
man 5 contab
Ich habe den Speicherort der Bash-Datei in geändert
/usr/local/mysqlbackup.sh
. Danach habe ich die folgenden Befehle für die Datei ausgeführt:Dann hörte ich auf,
~$ crontab -e
den Befehl zum Bearbeiten des Cron-Jobs zu verwenden, und begann damit,sudo nano /etc/crontab
eine neue Jobzeile mit den folgenden Angaben zu erstellen :Ich habe stattdessen begonnen, diese Datei zu verwenden, weil ich damit festlegen konnte, welcher Benutzer sie ausführen soll. Nach diesen Änderungen funktioniert der Cron-Job.
quelle
Sie können versuchen, die Fehler von Ihrer Cron-Zeile in eine Datei umzuleiten, z.
/usr/local/mysqlbackup.sh &>/var/log/mysqlcron.log
Das sollte sowohl stdout als auch stderr abfangen und melden, wenn ein Syntaxfehler usw. vorliegt.
Hinweis: Wenn Sie eine Sicherung einer Live- Datenbank durchführen, sollten Sie die spezifischen Dienstprogramme für die Sicherung verwenden
mysqldump
, anstatt einen generischen tar-Befehl zu verwenden. Der Grund dafür ist, dass wenn sich Dateien in / var / lib / mysql / ändern, während der Tar ausgeführt wird, möglicherweise ein inkonsistentes Image der Datenbank angezeigt wird.quelle
&>
ist keine sh-Syntax.>file 2>&1
wird sowohl mit sh als auch mit bash funktionieren.