WordPress & Co. bieten zahlreiche Plugins für den Internetauftritt an, darunter auch welche für die Datensicherung. Je mehr Plugins aber auf einem Webserver installiert werden, desto mehr leidet die Geschwindigkeit der Internetseite aufgrund des hohen Arbeitsspeichers.

Einer der häufigsten Gründe, warum Besucher den Internetauftritt nach der ersten Seite wieder verlassen, ist die zu lange Ladezeit (mehr als 3 Sekunden).

Wir zeigen Ihnen heute, wie Sie die Daten auf Ihrer Homepage sichern können, ohne dafür ein Plugin zu verwenden.


Zuerst legen wir auf unserem Webserver einen neuen Ordner an. Wir geben diesem beispielhaft den Namen „Backup“. In diesem Verzeichnis werden später die Backup-Dateien abgelegt.

Für unser Backup-System benötigen zwei Dateien. Eine sichert die Inhalte der der MySQL-Datenbank, die andere die Daten des FTP-Verzeichnisses.

1. Datenbank-Backup

Wir beginnen mit der Erstellung der Datenbank-Sicherungsdatei. Dazu erstellen wir im Ordner „Backup“ eine leere Textdatei, in die wir den folgenden Code einfügen (unter Abänderung der gekennzeichneten Stellen):

<?php

// Einstellungen

$db_name = "IhreDatenBank";                 // Hier den Namen Ihrer MySQL-Datenbank eingeben
$db_passwd = "IhrDatenBankPasswort";        // Hier das Datenbankpasswort eintragen
$downloadlink_erstellen = "ja";

$bestaetigungsmail_senden = "ja";

$bestaetigungsmail_adresse = "IhreMailAdresse";                    // Hier Ihrer E-Mail-Adresse eintragen
$bestaetigungsmail_betreff = "[BACKUP] Ihr Backupscript";          // Hier den gewünschten E-Mail-Betreff eingeben

$sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";

/* **********************************
AB HIER BITTE NICHTS MEHR ÄNDERN!!! 
************************************/

// Daten überprüfen

if ( $db_name == "IhreDatenBank" or $db_passwd == "IhrDatenBankPasswort" )
{
die("FEHLER: Sie m&uuml;ssen zun&auml;chst Ihre Datenbankdaten im Script eingeben!");
}
if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )
{
die("FEHLER: Das zu erstellende Dump existiert bereits!");
}

// Dump erstellen

exec("mysqldump -u $db_name -p'$db_passwd' --quick --allow-keywords --add-drop-table --complete-insert --quote-names $db_name >$sql_file");
exec("gzip $sql_file");

// Größe ermitteln

$datei = $sql_file . ".gz";
$size = filesize($datei);
$i = 0;
while ( $size > 1024 )
{
$i++;
$size = $size / 1024;
}
$fileSizeNames = array(" Bytes", " KiloBytes", " MegaBytes", " GigaBytes", " TerraBytes");
$size = round($size,2);
$size = str_replace(".", ",", $size);
$groesse = "$size $fileSizeNames[$i]";

// Nachricht erstellen

$message = "Ihr Backup der Datenbank <b>" . $db_name . "</b> wurde durchgef&uuml;hrt.<br>";
$message .= "Die Gr&ouml;&szlig;e des erstellten Dumps betr&auml;gt <b>" . $groesse . "</b>.<br>";

if ($downloadlink_erstellen == "yes" or $downloadlink_erstellen == "ja" or $downloadlink_erstellen == "1")
{
$link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
$link = str_replace(basename(__FILE__),$datei,$link);
$message .= "Downloadlink: <a href=" . $link . ">" . $datei . "</a>";
}

// Nachricht ausgeben

echo $message;

// E-Mail versenden

if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "ja" or $bestaetigungsmail_senden == "1")
{
if(!preg_match( '/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/' , $bestaetigungsmail_adresse))
{
echo "<br>FEHLER: Mail konnte nicht versendet werden, da die Adresse ung&uuml;ltig ist!";
}
else
{
mail($bestaetigungsmail_adresse, $bestaetigungsmail_betreff,
$message,"From: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Reply-To: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Content-Type: text/html\r\n")
or die("FEHLER: Mail konnte wegen eines unbekannten Fehlers nicht versendet werden");
echo "<br>Best&auml;tigungsmail wurde erfolgreich versandt!";
}
}
?>

Anschließend speichern wir die Textdatei unter dem Dateityp .phpx ab und geben Ihr den Namen db-backup, also db-backup.phpx.

2. FTP-Backup

Für die Sicherung unserer Themes, Plugins, Bilder, … erstellen wir wieder eine leere Textdatei und fügen den folgenden Code ein:


<?
    // PHP-Konfiguration optimieren
    @error_reporting(E_ALL ^ E_WARNING);
    @ini_set("max_execution_time", 300);
    @ini_set("memory_limit", "256M");
    
    // Zu sicherndes Unterverzeichnis. Bleibt leer, wenn gesamter Account gesichert werden soll.
    $verzeichnis = "DOMAINVERZEICHNIS";
    
    // Damit kein Domino-Effekt entsteht, und die Sicherungsdateien gesichert werden, werden diese ausgeschlossen. Log-Dateien sollten auch nicht gesichert werden.
    $ignorieren = array("*.sql.gz", "*.tar.gz", "usage", "logs");

    // PEAR-Klasse einbinden und Archiv erstellen
    $pfad = preg_replace('/(\/www\/htdocs\/\w+\/).*/', '$1', realpath(__FILE__));
    include "Archive/Tar.php";
    $archivname = preg_replace('/.+\/(.+)\/$/', '$1', $pfad).date('_Y-m-d_His').".tar.gz";
    $archiv = new Archive_Tar($archivname, true);
    $archiv->setIgnoreList($ignorieren);
    $archiv->createModify($pfad.$verzeichnis, "", $pfad);
    echo "Backup fertig";
?>

Sobald wir das haben speichern wir die Textdatei unter dem Dateityp .php ab und nennen sie ftp-backup, sprich ftp-backup.php.

Jetzt können Sie den Link zu den Backup-Dateien in Ihrem Browser aufrufen:

  • www.meinedomain.de/backup/db-backup.phpx
  • www.meinedomain.de/backup/ftp-backup.php

In Ihrem Backup-Ordner wurden nun zwei Sicherungsdateien mit der Endung .gz erstellt.

Im zweiten Teil unseres Tutorials zeigen wir Ihnen, wie Sie Ihre Daten automatisch und zeitgesteuert sichern lassen können.

Bildnachweis:

Beitragsbild – © OpenClipart-Vectors, pixabay.com