Webseite und SQL Datenbank mittels Cronjobs sichern

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Webseite und SQL Datenbank mittels Cronjobs sichern

    Guten Morgen,

    hier ein Tutorial wie man die eigene Webseite und der SQL Datenbank mittels Cronjob sichert.

    1. Anlegen eines gesicherten Ordners.

    Zuerst musst du via FTP auf deinen Webspace und einen Ordner für die Backups anlegen.

    Wir nehmen den Ordner "BackUp". Diesen sichern wir zuerst via Passwortschutz ab damit deine Backups geschützt sind.

    Erstelle im Ordner dann eine Datei mit dem Namen ".htaccess" .

    Dort gibst du folgendes an:

    Quellcode

    1. AuthType BasicAuthName "Passwortgeschützter Bereich"AuthUserFile /kunden/homepages/xx/xxxxxxxxx/htdocs/[Ordner]/
    2. .htpasswdrequire user [Username]


    Dabei ist es wichtig dass der Pfad zum BackUpordner stimmt.

    Du musst also den Pfad " /xx/xxxxxxxxx/htdocs/[Ordner] " vervollständigen.
    Nun musst du den Benutzer für den Zugang anlegen.

    Jetzt legst du eine zweite Datei mit dem Namen " .htpasswd " an.In diese Datei schreibst du folgendes:

    Quellcode

    1. [Username]:[VerschlüsseltesPasswort]


    Das Passwort wird verschlüsselt in der Datei gespeichert.

    Ein verschlüsseltes Passwort erhälst du HIER .

    Dort gibst du dein gewünschtes Passwort an und kopierst den "Crypt" in deine " .htpasswd ", speichern und fertig.
    Der Ordner " BackUp " ist nun fertig und Passwort gesichert.

    2. Anlegen der BackUpdatei für den FTP.

    Nun legst du eine Datei mit dem Namen " ftp-backup.php" an .

    Dort muss folgender Code rein:

    Quellcode

    1. <?
    2. // PHP-Konfiguration optimieren
    3. @error_reporting(E_ALL ^ E_WARNING);
    4. @ini_set("max_execution_time", 300);
    5. @ini_set("memory_limit", "256M");
    6. // Zu sicherndes Unterverzeichnis. Bleibt leer, wenn gesamter Account gesichert werden soll.
    7. $verzeichnis = "deinverzeichnis";
    8. // Auszuschließende Ressourcen
    9. $ignorieren = array("*.sql.gz", "*.tar.gz", "usage", "logs");
    10. // PEAR-Klasse einbinden und Archiv erstellen
    11. $pfad = preg_replace('/(\/www\/htdocs\/\deinverzeichnis\/).*/', '$1', realpath(__FILE__));
    12. include "Archive/Tar.php";
    13. $archivname = preg_replace('/.+\/(.+)\/$/', '$1', $pfad).date('_Y-m-d_His').".tar.gz";
    14. $archiv = new Archive_Tar($archivname, true);
    15. $archiv->setIgnoreList($ignorieren);
    16. $archiv->createModify($pfad.$verzeichnis, "deinverzeichis/backup/", $pfad);
    17. echo "Backup fertig";
    18. ?>
    Alles anzeigen


    Diese Datei anschließend speichern.
    Ruf das Script nun auf: " deineadresse.de/backup/ftp-backup.php ".

    Das Script legt automatisch eine gepackte Datei mit deinen gesicherten Daten an und gibt dir eine Antwort wenn es fertig ist.

    3. Anlegen einer Backupdatei deiner SQL Datenbank.

    Nun erstellst du eine neue Datei mit der Bezeichnung " db_backup.phpx

    "Dort muss folgender Code rein:

    PHP-Quellcode

    1. <?php
    2. ######## einstellungen #############################################
    3. $db_name = "datenbankname";
    4. $db_passwd = "datenbankname";
    5. $downloadlink_erstellen = "ja";
    6. $bestaetigungsmail_senden = "ja";
    7. $bestaetigungsmail_adresse = "deine@mailadresse";
    8. $bestaetigungsmail_betreff = "[BACKUP] Ihr Backupscript";
    9. $sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";
    10. ####################################################################
    11. ################## AB HIER BITTE NICHTS MEHR ÄNDERN!!! ################
    12. ### daten überprüfen
    13. if ( $db_name == "IhreDatenBank" or $db_passwd == "IhrDatenBankPasswort" )
    14. {
    15. die("FEHLER: Sie m&uuml;ssen zun&auml;chst Ihre Datenbankdaten im Script eingeben!");
    16. }
    17. if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
    18. {
    19. die("FEHLER: Das zu erstellende Dump existiert bereits!");
    20. }
    21. ## dump erstellen
    22. exec("mysqldump -u $db_name -p'$db_passwd' --quick --allow-keywords --add-drop-table --complete-insert --quote-names $db_name >$sql_file");
    23. exec("gzip $sql_file");
    24. ### größe ermitteln
    25. $datei = $sql_file . ".gz";
    26. $size = filesize($datei);
    27. $i = 0;
    28. while ( $size > 1024 )
    29. {
    30. $i++;
    31. $size = $size / 1024;
    32. }
    33. $fileSizeNames = array(" Bytes", " KiloBytes", " MegaBytes", " GigaBytes", " TerraBytes");
    34. $size = round($size,2);
    35. $size = str_replace(".", ",", $size);
    36. $groesse = "$size $fileSizeNames[$i]";
    37. ### nachricht erstellen
    38. $message = "Ihr Backup der Datenbank <b>" . $db_name . "</b> wurde durchgef&uuml;hrt.<br>";
    39. $message .= "Die Gr&ouml;&szlig;e des erstellten Dumps betr&auml;gt <b>" . $groesse . "</b>.<br>";
    40. if ($downloadlink_erstellen == "yes" or $downloadlink_erstellen == "ja" or $downloadlink_erstellen == "1")
    41. {
    42. $link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
    43. $link = str_replace(basename(__FILE__),$datei,$link);
    44. $message .= "Downloadlink: <a href=" . $link . ">" . $datei . "</a>";
    45. }
    46. ## nachricht ausgeben
    47. echo $message;
    48. ### mail versenden
    49. if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "ja" or $bestaetigungsmail_senden == "1")
    50. {
    51. if(!preg_match( '/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/' , $bestaetigungsmail_adresse))
    52. {
    53. echo "<br>FEHLER: Mail konnte nicht versendet werden, da die Adresse ung&uuml;ltig ist!";
    54. }
    55. else
    56. {
    57. mail($bestaetigungsmail_adresse, $bestaetigungsmail_betreff,
    58. $message,"From: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Reply-To: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Content-Type: text/html\r\n")
    59. or die("FEHLER: Mail konnte wegen eines unbekannten Fehlers nicht versendet werden");
    60. echo "<br>Best&auml;tigungsmail wurde erfolgreich versandt!";
    61. }
    62. }
    63. ?>
    64. Bitte ändern Sie im Quellcode folgende 3 Zeilen:
    65. $db_name = "datenbankname";
    66. $db_passwd = "datenbankpasswort";
    67. $bestaetigungsmail_adresse = "deine@mailadresse";
    Alles anzeigen


    Ändere die Daten "datenbankname", datenbankpasswort" und "deine@mailadresse" mit deinen Daten ab und speichere die Datei im FTP ab.

    Das Script lässt sich ebenfalls über deine Adresse aufrufen und legt automatisch eine gepackte Datei an.

    Die Grundlegenden Schritte für Cronjobs sind nun erledigt.

    4. Cronjobs automatisch starten

    Jetzt müssen die Scripte automatisch gestartet werden.
    Viele Webhoster bieten ihren Kunden in der Administration des Webspaces, Cronjobs an.
    Der Cronjob benötigt dann die Zugangsdaten die vorher in der ".htaccess" und in der ".htpasswd" angelegt wurden.

    Dort gibst du die Links zu den Scripten an und stellst ein in welchen Abständen sie gestartet werden sollen.
    Nach dem die Scripte das BackUp angelegt haben, erhälst du z.B. vom DB_Backupscript eine Mail dass ein Backup angelegt wurde.

    Falls noch Fragen dazu bestehen sollten, kannst du hier einfach darauf antworten.

    Gruß