Teil von  SELFPHP
Professional CronJob-Service

Suche

:: Anbieterverzeichnis ::

Globale Branchen

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

 

:: SELFPHP Forum ::

Fragen rund um die Themen PHP?
In über 130.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

Am Ende der Seite finden Sie das komplette Beispiel als Download.

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.




 

Download

Info   ZIP BZIP2 TARGZ
Größe   2.13 Kilobyte 2.26 Kilobyte 2.19 Kilobyte

Alle Beispiele als PHP-Datei(en)

Hier haben Sie die Möglichkeit, sich sämtliche auf dieser Seite gezeigten Beispiele als PHP-Dateien direkt downzuloaden.

Umständliches Copy & Paste ist daher nicht mehr notwendig, da alle Beispiele sofort ausprobiert werden können.

Sie haben bei der Auswahl der bereitgestellten Downloads mehrere Möglichkeiten, je nachdem welches Komprimierungsverfahren Sie bevorzugen.

Zurück zur Übersichtsseite


 




:: Premium-Partner ::

Webhosting/Serverlösungen

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Sedo GmbH weitere Sponsoren
 


:: Buchempfehlung ::

Der CSS-Problemlöser

Der CSS-Problemlöser zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Webhosting/Serverlösungen

Suchen Sie den für Sie passenden IT-Dienstleister für Ihr Webhosting-Paket oder Ihre Serverlösung?

Sie sind nur ein paar Klicks davon entfernt!


 

Ausgewählter Tipp im Bereich PHP-Skripte


Dateien/Verzeichnisse mit ZIP komprimieren

Weitere interessante Beispiele aus dem SELFPHP Kochbuch finden Sie im Bereich PHP-Skripte
 

SELFPHP Code Snippet


Einen Farbwert in den Hexfarbwert umrechnen

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2024 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt
© 2005-2024 E-Mail PHP5 Praxisbuch - Matthias Kannengiesser, m.kannengiesser@selfphp.de