Teil von  SELFPHP
  +++ SELFPHP CronJob-Service :: Jetzt auch als Professional-Version verfügbar! +++

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP? In über 120.000 Beiträgen finden Sie sicher die passende Antwort!  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
MySQL-Backup in Datenbank einspielen


Systemvoraussetzung

  • Linux
  • PHP 4 >= 4.3.0
  • PHP 5
  • MySQL
  • Sed (Stream-Editor)
  • wahlweise ZIP, BZIP2, TARGZ

Datei(en)

backupImportDB.php

Dieses Skript ist das Gegenstück zu dem zuvor gezeigten Beispiel eines Datenbank-Backups. Das Programm liest die von Ihnen erstellten und komprimierten Backups wieder zurück in die bestehende Datenbank. Bitte beachten Sie, dass bestehende gleiche Tabellen, die sich in der zu ersetzenden Datenbank befinden, überschrieben werden.


Hinweis

Sollte das Skript, nachdem Sie es ausgeführt haben, keine Backupdatei erzeugen, lesen Sie bitte den Text zu Verzeichnisrechten im einleitenden Teil „Grundlegende Informationen“ in diesem Kapitel. Höchstwahrscheinlich wird es dann daran liegen, dass Sie nicht die erforderlichen Rechte für dieses Verzeichnis besitzen und diese erst vergeben müssen.

Konfiguration

Vervollständigen Sie die benötigten Parameter in der Konfiguration mit den Werten für Ihre MySQL-Datenbank. Sollten Sie mit dem zuvor erklärten MySQL-Backup-Beispiel eine Integritätsprüfung beim Erstellen der Backups aktiviert haben, können Sie die einzulesende Backupdatei auf ihre „Herkunft“ überprüfen. Anhand des MD5-Codes in der Log-Datei kann die einzulesende Backupdatei verglichen werden – wichtig ist hierbei allerdings, dass es sich um den Originalnamen der Datei handelt.

  <?PHP

//    Datenbank Hostname oder IP
$self_config['dbhost'] = 'localhost';

//    Datenbank Username
$self_config['dbuser'] = 'dbuser';

//    Datenbank Passwort
$self_config['dbpassword'] = 'dbpassword';

//    Datenbank Name
$self_config['dbname'] = 'dbname';

//    ZIP-Format ('zip' , 'bzip2' , 'targz')
$self_config['zipformat'] = 'zip';

//    Name der Backupdatei
$self_config['backupfile'] = 'db152878808_2006-03-10_16-53-42.zip';

// Backupdatei nach Import löschen? - TRUE / FALSE
$self_config['backupdelete'] = FALSE;

// Entpackte SQL-Datei nach Import löschen? - TRUE / FALSE
$self_config['sqlfiledelete'] = FALSE;

// Backupverzeichnis
$self_config['verz'] = 'backup/';

// Integritätsprüfung vornehmen? - TRUE / FALSE
// Wird beim Einlesen der Backupdatei in die Datenbank genutzt
$self_config['integritaet'] = TRUE;

// Name der Log-Datei für Integritätsprüfung
$self_config['logfile'] = 'logfile.log';

Hier beginnt der eigentliche Programmcode. Sie sollten den Code nur dann ändern, wenn Sie wirklich wissen, was Sie tun. Sie sollten sich bewusst sein, dass der Programmcode nicht nur Löschfunktionen, sondern auch Shell-Befehle enthält. Sollten Sie diesem Programmcode Benutzereingaben übergeben, so prüfen Sie diese genau, bevor die Eingaben eventuell an die Shell mit übergeben werden und Schaden anrichten!

 $zip_format['zip'] = 'zip';
$zip_format['bzip2'] = 'tar.bz2';
$zip_format['targz'] = 'tar.gz'

$compressFile $self_config['verz'] . $self_config['backupfile'];
$checkCompressFile TRUE;

Integritätsprüfung

Sie überprüft anhand des Logfiles, ob es sich um die original erstellte Backupdatei handelt. Das soll gewährleisten, dass die einzulesende Datei nicht manipuliert oder beim Senden beschädigt wurde. Sollte es sich um die Originaldatei handeln, so wird $checkCompressFile auf TRUE gesetzt.

 if($self_config['integritaet'])
{
    
    
$checkCompressFile FALSE;

    
$handle fopen ($self_config['logfile'],"r"); 
    while ((
$data fgetcsv ($handle1000"|")) !== FALSE
    {

        if(
$data[0] == $self_config['backupfile'])
        {
       if(
md5_file($compressFile) == rtrim($data[1]))
           
$checkCompressFile TRUE;
        }
    }
    
fclose ($handle);

}

Backupdateien dekomprimieren

Dekomprimiert die zuvor erstellte Backupdatei in eine SQLDatei und löscht danach, je nach Angabe in der Konfiguration, die komprimierte Backupdatei.

  • -x entpackt die Datei
  • -d dekomprimieren
  • -c in die Standard Ausgabe schreiben
 if($self_config['zipformat'] == "zip")
{
    
    
$tarName .= '.' $zip_format[$self_config['zipformat']];
    
$shellBefehl "unzip -x $compressFile";
    
exec($shellBefehl);
    
}
else if(
$self_config['zipformat'] == "bzip2")
{
    
    
$shellBefehl "bzip2 -cd $compressFile | tar -xf -";
    
exec($shellBefehl);
    
}
else
{
    
    
$tarName .= '.' $zip_format[$self_config['zipformat']];
    
$shellBefehl "gzip -cd $compressFile | tar -xf -";
    
exec($shellBefehl);
    
}

$pattern 
'/'.$zip_format[$self_config['zipformat']].'/';
$sqlFile = @preg_replace($pattern,"",$compressFile) . 'sql';

if($self_config['backupdelete']) 
    @
unlink($compressFile);

Backupimport der Datenbank

Führt den Backupimport aus und spielt den Inhalt zurück in die Datenbank. Je nach Angabe in der Konfigurationsdatei wird danach die *.sqlDatei gelöscht.

 if(@file_exists($sqlFile) && $checkCompressFile == TRUE)

    
$mysqlDump 'mysql ';
    
$mysqlDump .= '--host="' $self_config['dbhost'] . '" ';
    
$mysqlDump .= '--user="' $self_config['dbuser'] . '" ';
    
$mysqlDump .= '--password="' $self_config['dbpassword'] . '" ';
    
$mysqlDump .= $self_config['dbname'] . ' < ' $sqlFile;
    
exec($mysqlDump);
}

if($self_config['sqlfiledelete']) 
    @
unlink($sqlFile);

?>


 


Dieses Skript aus dem SELFPHP KOCHBUCH wurde von SELFPHP unter dem "Tarif Mc500" von McAc.net-Webhosting erfolgreich ausgeführt und getestet!

Auf der Übersichtseite unter "McAc.net – Webhosting zu diesem Buch" finden Sie weitere Informationen zu dem Webhostingpaket, dass durch SELFPHP getestet wurde.


 




:: Premium-Partner ::

Webhosting/Serverlösungen


Premium-Partner LeaseWeb Germany GmbH
Premium-Partner MECO Systemhaus GmbH & Co. KG
Premium-Partner PSW GROUP GmbH & Co. KG
Premium-Partner BPI-Systeme
Premium-Partner Pixel X
Premium-Partner
 

:: SELFPHP Sponsoren ::


DM Solutions
Microsoft Deutschland GmbH
Sedo - Bei uns wird PHP großgeschrieben
hostfactory.ch - OptimaNet Schweiz AG
ZEND - The PHP Company
Kaspersky Labs
HighText iBusiness
SELFPHP Sponsoren
 

Qozido


© 2001-2013 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt