Teil von  SELFPHP
Letztes Update: 14.09.2007 09:07:01

Navigation

Seite Startseite
Seite Aktuelles
Seite Seite News*
Seite Seite Pressemitteilungen*
Seite SELFPHP
Seite Seite Über SELFPHP
Seite Seite Werbung
Seite Seite Kontakt
Seite Seite Unsere Banner
Seite Seite Impressum
Seite Qozido
Seite Seite Diving Edition
Seite Seite Snorkeling Edition
Seite SELFPHP Dokumentation
Seite Seite PHP-Skripte
Seite Seite PHP Befehlsreferenz
Seite Seite PHP 5 Praxisbuch
Seite Seite PHP Code Snippets
Seite Seite SELFPHP in Buchform
Seite Anbieterverzeichnis
Seite Seite Globale Branchen
Seite Seite Webhosting/Server
Seite Services
Seite Seite Forum*
Seite Seite RSS-Feeds*
Seite Seite Downloads*
Seite Seite Gratis-Video-Lektionen*
Seite Seite SELFPHP auf Heft-CD*
Seite Seite Newsletter*
Seite Internet Security
 sponsored by  
Seite Stellenangebote*
Sedo - Bei uns wird PHP großgeschrieben
Seite Premium-Partner   
Webhosting/Serverlösungen
Seite Produktempfehlung   
Seite Seite SteadyBackup

 
* Link führt ins Internet


Anbieterverzeichnis
Informieren Sie sich über die Unternehmen in unserem Anbieterverzeichnis!  
 


SELFPHP Forum
Fragen rund um die Themen PHP? In über 100.000 Beiträgen finden Sie sicher die passende Antwort!*  


Newsletter
Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!*

Vorname: 
Name:
E-Mail:
 




 

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);

?>


 




 sponsored by

Sedo - Bei uns wird PHP großgeschrieben


VERIO - An NTT Communications Company


HighText iBusiness


Webspace-Verkauf.de


video2brain




 Premium-Partner
 Webhosting/Serverlösungen

BPI-Systeme


Premium-Partner Pixel X


Premium-Partner First Colo


Premium-Partner dogado Internet




Qozido


© 2001-2008 E-Mail SELFPHP - Damir Enseleit, info@selfphp.deImpressumKontakt