Teil von  SELFPHP   Teil von  Code Snippets / MySQL / Datenbank Wartung
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:
 
 

:: Qozido ::

Die Bilderverwaltung mit Logbuch für Taucher und Schnorchler.   

 
 
Datenbank-Backup mit automatischem FTP-Upload

SELFPHP ist Shopware Solution Partner
Shopware ist ein vielfach ausgezeichnetes Onlineshop-System der shopware AG, das auf PHP. Zend Framework und SQL basiert.
SELFPHP unterstützt Sie als Shopware Solution Partner bei der Konzeption, Programmierung und Realisierung Ihres Onlineshops und passt Shopware bei Bedarf an Ihre Unternehmensbedürfnisse an. Weitere Informationen




Beispielaufgabe

Datenbank-Backup mit automatischem FTP-Upload



Beschreibung

Nachfolgend stellen wir Ihnen eine Klasse in PHP5 vor, mit der Sie komfortabel ein Backup Ihrer bestehenden MySQL-Datenbanken erstellen können.
Weiterhin besteht nach dem Backup die Möglichkeit, die komprimierte Backupdatei automatisch auf einen entfernten Backup-Server zu speichern. Als Rückgabewert der Klasse erhalten Sie verschiedene Parameter über die Dateigröße oder z.B. der verstrichenen Zeit bei dem Upload auf den FTP-Server.



<?php

/**
 * Db_Backup_Service
 * 
 * PHP5 Class Datenbank Backup
 * Required: PHP 5 >= 5.1.2
 *
 * @package Db_Backup_Service
 * @author Damir Enseleit
 * @copyright 2012, SELFPHP OHG
 * @license BSD License
 * @version 1.0.0
 * @link http://www.selfphp.de
 * 
 */

class Db_Backup_Service 

    
/**
     * @var string Datenbank Hostname oder IP
   */
    
private $dbHost "localhost";
    
    
/**
     * @var string Datenbank Socket (Leer lassen falls nicht benötigt)
   */
    
private $dbSocket "/tmp/mysql5.sock";
    
    
/**
     * @var string Datenbank Username
   */
    
private $dbUser "";
    
    
/**
     * @var string Datenbank Passwort
   */
    
private $dbPasswd "";
    
    
/**
     * @var string Datenbank Name
   */
    
private $dbName "";
    
    
/**
     * @var string ZIP-Format ('zip' , 'bzip2' , 'targz')
   */
    
private $zipFormat "zip";
    
    
/**
     * @var string Zeitstempel
   */
    
private $timeBackup "";
    
    
/**
     * @var string Upload Filename
   */
    
private $uploadFile "";
    
    
/**
     * FTP-Daten
     */
    
private $ftpUser ''// FTP Username
    
private $ftpPasswd ''// FTP Passwort
    
private $ftpHost 'selfphp.de'// FTP Host
    
private $ftpPfad '/backuptest/'// Pfad auf dem Backupserver 
mit führendem und endendem Slash!
    
    
    
/**
     * Constructor 
     */
    
function __construct( ) {
        
        
$this->timeBackup date("Y-m-d_H-i-s");
    
    } 
    
    
/**
   * Backup starten
   */ 
    
public function startDbBackup(  ) {
        
        
$mysqlDump    'mysqldump ';
        
$mysqlDump .= $this->dbName ' ';
        
$mysqlDump .= '--host="' $this->dbHost '" ';
        
        if ( !empty( 
$this->dbSocket ) )
            
$mysqlDump .= '--socket="' $this->dbSocket '" ';        
        
        
$mysqlDump .= '--user="' $this->dbUser '" ';
        
$mysqlDump .= '--password="' $this->dbPasswd '" ';
        
        
$dateiName $this->dbName '_' $this->timeBackup '.sql';
                        
        if( 
$this->checkStreamEditor() )
            
$mysqlDump .= '| sed "s/^--.*$//" > ' $dateiName;
        else
            
$mysqlDump .= '> ' $dateiName;
            
        
exec($mysqlDump);
        
        
$this->startZip();

    }
    
    
/**
   * Backup komprimieren
   */ 
    
private function startZip( ) { 
        
        
$tarName $this->dbName '_' $this->timeBackup;
        
$dateiName $this->dbName '_' $this->timeBackup '.sql';
        
        if ( 
$this->zipFormat == 'zip' )
        {
            
$tarName .= '.zip';            
            
$shellBefehl "zip -r $tarName $dateiName";
            
exec($shellBefehl);
        }
        else if(
$self_config['zipformat'] == "bzip2")
        {
            
$tarName .= '.tar.bz2';
            
$shellBefehl "tar -jcf $tarName $dateiName && bzip2 $tarName";
        }
        else
        {
            
$tarName .= '.tar.gz';
            
$shellBefehl "tar -zcf $tarName $dateiName && gzip $tarName";
        }    
        
        
$this->uploadFile $tarName;
        
        
exec($shellBefehl);
        
        
//Löscht die zuvor erstellte nicht komprimierte Backupdatei (*.sql)
        
unlink($dateiName);
        
    }
    
    
/**
     * Überprüfen ob SED (Stream-Editor) installiert ist
     *
     * @return    bool    true / false
     */ 
    
private function checkStreamEditor( ) { 
        
        
exec"whereis sed"$whereis );
        
        if( 
$whereis[0] == "sed:" )
            return 
false;
        else
            return 
true;
        
    }
    
    
/**
   * FTP-Upload starten
   */
    
public function curlUpload() {
        
        
$fp   fopen($this->uploadFile"r"); 
    
$url  "ftp://".$this->ftpUser.":".$this->ftpPasswd."@"
             
$this->ftpHost.":21" .$this->ftpPfad.$this->uploadFile
    
    
$handle curl_init();     
    
    
curl_setopt($handleCURLOPT_URL$url);  
    
curl_setopt($handleCURLOPT_RETURNTRANSFER1);  
    
curl_setopt($handleCURLOPT_UPLOAD1);  
    
curl_setopt($handleCURLOPT_INFILE$fp);  
    
curl_setopt($handleCURLOPT_INFILESIZEfilesize($this->uploadFile));  

    
$result curl_exec($handle);  

    
$info curl_getinfo ($handle);

    
curl_close($handle); 
    
    return 
$info

    } 
}

?>



Anwendungsbeispiel

<?php

include_once ('Db_Backup_Service.php'); 

$dbBackup = new Db_Backup_Service( );

// Backup erstellen
$dbBackup -> startDbBackup( ); 

// FTP-Upload starten
$infoF $dbBackup -> curlUpload( ); 

echo 
'Dateigröße: ' $infoF['size_upload'] . '<br>';
echo 
'Geschwindigkeit: ' $infoF['speed_upload'] . '<br>';
echo 
'Gesamtzeit: ' $infoF['total_time'] . '<br><br>';

print_r($infoF);

?>



Ausgabebeispiel: Browseransicht

Dateigröße: 1621817
Geschwindigkeit: 5363736
Gesamtzeit: 0.302367








 




:: Premium-Partner ::

Webhosting/Serverlösungen

Profihost AG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Sedo GmbH weitere Sponsoren
 


:: Buchempfehlung ::

Websites optimieren für Google & Co.

Websites optimieren für Google & Co. 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


Tabellenzeilen abwechselnd farbig darstellen

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

SELFPHP Code Snippet


Größe einer MySQL-Datenbank ermitteln

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2016 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt