Backups per Cronjob

Wer in seinem 1&1 Webhosting-Vertrag SSH-Zugang hat, kann Cronjobs anlegen. Darüber lassen sich z.B. zeitgesteuerte Sicherungen anlegen von Webspace und MySQL-Datenbank.

Dazu werden die Sicherungen als Archiv gepackt und mit einem Dateinamen versehen der das Datum enthält.
Eine Sicherung vom 31.12.2012 würde z.B. dann backup2012_12_31.sql.gz heissen.

Beispiel für ein Skript (mysqlbackup.sh), die Dateirechte sollten auf 744 stehen:

#!/usr/bin/perl

########### Konfiguration ###########
#Pfad in den das endgültige Backup abgelegt werden soll
$PATH = „/homepages/5/d1234567/htdocs/backup/“;

#Host/Servername der MySQL
$HOST = „db1976.1und1.de“;

#Passwort der MySQL
$PASS = „geheim“;

#Benutzername der MySQL
$USER = „dbo1234567“;

#Datenbankname
$DB = „db1234567“;

#Dateiname der erstellten Sicherung. Dieser wird durch Datum und .sql.gz ergänzt
#aus mysqlbackup wird z.B. mysqlbackup2012_12_31.sql.gz
$BACKUPNAME = „mysqlbackup“;
#Temporärer Pfad in dem der Dump erstellt wird bevor er dann gepackt und umbenannt/verschoben wird
$TEMPPATH = „/homepages/5/d210846470/htdocs/“;

########### ######## ###########

#Dump der MySQL erstellen und erstmal als dump.sql ins htdocs legen
system(„/usr/bin/mysqldump –host=“.$HOST.“ –password=“.$PASS.“ –user=“.$USER.“ „.$DB.“ > „.$TEMPPATH.“dump.sql“);

#Datum ermitteln
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime time;
#Datum formatieren
$DATE = (1900 + $year).“_“.($mon + 1).“_“.$mday;

#Dump packen
system(„gzip „.$TEMPPATH.“dump.sql“);

#gepackten Dump verschieben/umbenennen
system(„mv „.$TEMPPATH.“dump.sql.gz „.$PATH.$BACKUPNAME.$DATE.“.sql.gz“)

Ähnliches kann man auch mit einem Verzeichnis auf dem Webspace machen. Im Prinzip wird nur der enstrechende Ordner als Archiv in den Backup-Ordner gelegt.
Eine Sicherung vom 31.12.2012 würde in dem Beispiel dann wordpressblog_2012_12_31.tar heissen.

Beispiel für ein Skript (webspacebackup.sh), die Dateirechte sollten auf 744 stehen:

#!/usr/bin/perl

#Pfad des ordners der gesichert werden soll
$WEBSITEPATH = „/homepages/5/d1234567/htdocs/wordpress/“;

#Pfad in den das endgültige Backup abgelegt werden soll
$BACKUPPATH = „/homepages/5/d1234567/htdocs/backup/“;

#Name der Backupdatei, Datum und .tar werden zugefügt später
$BACKUPNAME = „wordpressblog_“;

#Aktuelles Datum bestimmen und formatieren
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime time;
$DATE = (1900 + $year).“_“.($mon + 1).“_“.$mday;

#Dateien packen
system („tar -cvvf „.$BACKUPPATH.$BACKUPNAME.$DATE.“.tar „.$WEBSITEPATH);

Die Sicherung der Datenbank wird in dem Fall immer Montags um 10:30 veranlasst, die für das Verzeichnis um 11:30. Die Skripte für die Sicherungen liegen dabei in einem eigenen Verzeichnis.
Der dritte Cronjob löscht im Verzeichnis, in dem die Sicherungen liegen, alle Dateien die älter als 30 Tage sind, damit der Webspace nicht total voll läuft. Das Skript sollte nicht in dem Verzeichnis der Sicherungen liegen, da es sich ansonsten nach 30 Tagen selbst löschen würde.
Das MAILTO bewirkt dass eine E-Mail bei Ausführung eines Cronjobs versendet wird. Dies ist auch zum debuggen von Cronjobs interessant.
Das „2>&1“ ist eine Umleitung der Ausgabe. Es gibt STDIN, STDOUT, and STDERR die nummeriert sind mit 0, 1 und 2. Falls es Fehler gibt, landen diese Informationen in der Mail die versendet wird.


MAILTO='[email protected]'
30 10 * * 5 /homepages/5/d1234567/htdocs/cron/mysqlbackup.sh 2>&1
30 11 * * 5 /homepages/5/d1234567/htdocs/cron/webspacebackup.sh 2>&1
50 11 * * 5 find /homepages/5/d1234567/htdocs/backup/ -mtime +30 -exec rm {} \;

3 Gedanken zu „Backups per Cronjob

  1. Grüß dich Michael , andre von 1&1 Webhosting Neubrandenburg (TP)

    hab das Tehma mit chronjobs bei dir gelesen , versuch das Thema auf meinen eigenen server zu übernehmen , hab nen linux 12.04 TLS, das Problem was ich habe ist das die Links in deinen chronjobs etwas anders ist , dadurch hab ich etwas leichte verwirrung wo ich die Dateien hochladen muss und wie ich die Dateien , sprich die Links darin an passen muss, vieleicht kannst Du mir da mal Privat helfen wenn du Zeit hast ;-)

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.