Mysql Backup auf Hosteurope FTP-Space (PHP-Version)

Wie ich bereits im Artikel „Mysql Backup auf Hosteurope FTP-Space“ geschrieben habe, ist es immer sinnvoll ein Backup zu machen. Da mein Provider WebhostOne Cronjobs (ab Paket Webpaket Basic-300) anbietet, habe ich mir das Paket „FTP Backup S“ von Hosteurope mit 5GB und 2 User für 0,75 Euro pro Monat geholt. Folgendes Script sichert mir die Datenbank jeden Tag in der Nacht. Dabei wird nicht nur diese Blog gesichert, sondern noch zwei weitere gemeinnützige Homepages.

<?
// Backup erstellen
system("mysqldump -uMYSQLUSER -h127.0.0.1 --port=3307 -pMYSQLPASSWORD --all-databases > /tmp/dump.sql");

$conn_id = ftp_ssl_connect("server06.storage.hosteurope.de"); // SSL-Verbindung aufbauen
if($conn_id)
 {
  // Login mit Benutzername und Passwort
  $login_result = ftp_login($conn_id, "ftpUSER-ZUSATZ", "PASSWORD");

  if(ftp_put($conn_id, "backup_".date("Y-m-d").".sql", "/tmp/dump.sql", FTP_BINARY)) // Datei hochladen
   {
    echo "INFO: Datei erfolgreich hochgeladen\n";
   }
  else
   {
    echo "ERROR: FTP-Backup nicht erfolgreich!\n";
   }
  unlink("/tmp/dump.sql");  // Dump löschen
  ftp_close($conn_id);  // SSL-Verbindung schließen
 }
else
 {
  echo("ERROR: Login failed!");
 }
?>

Webhostone und Hosteurope bieten dabei die Möglichkeit, denn Transfer SSL-verschlüsselt durchzuführen. Will oder muss man auf die Verschlüsselung verzichten, weil es ein Partner nicht anbietet, muss im obigen Script ftp_ssl_connect durch ftp_connect ersetzt werden. Ausserdem wurde hier der Port 3307 angegeben und nicht der Standardport 3306, da bei Webhostone auf Port die Version 5 des Mysql-Servers läuft und auf 3306 Version 4.

Das Script wird als backup.php in einem Unterverzeichnis oder besser in einer separaten Subdomain abgelegt, das vom Web aus erreichbar ist. Am besten sichert man das ganze noch über eine .htaccess-Datei, in der die IPs reglementiert werden. Auch ist es sinnvoll eine index.php drin abzulegen, die auf die Hauptdomain verweiset. Auch kann man dem Script eine wirre Zeichenkette (z.B. backup_hasdfjfure.php) anhängen, um Scriptkiddis und Scanner die Arbeit schwer zu machen, weil es dem Cronjob egal ist, welche Datei er aufruft.

<?
header("location: http://www.dev-tec.de/");
?>

Nach dem Eintragen des Cronjobs sollte das Backup funktionieren. Um dies zu kontrollieren, benötigt man ein weiteres Script, da ein FTP-Backup-Account bei Hosteurope auf eine IP-Adresse beschränkt ist.

<?
// SSL-Verbindung aufbauen
$conn_id = ftp_ssl_connect("server06.storage.hosteurope.de");
if($conn_id)
 {
  $login_result = ftp_login($conn_id, "ftpUSER-ZUSATZ", "PASSWORD");  // Login mit Benutzername und Passwort
  var_dump(ftp_nlist($conn_id, "."));
  ftp_close($conn_id);  // SSL-Verbindung schließen
 }
else
 {
  echo("ERROR: Login failed!");
 }
?>

Auch dieses Script sollte gesichert werden über Dateinamen, .htaccess, Subdomain und/oder entsprechende Rechte .

Leave a comment

Your comment