Teil von  SELFPHP   Teil von  Code Snippets / MySQL / Datenbank Wartung
Professional CronJob-Service

Suche


iOS DevCon 2013



Software Architecture Summit 2013


:: 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 Produktempfehlung
Microsoft Windows Server 2008
Seite Windows Server 2008
Seite
Microsoft SQL Server 2008
Seite SQL Server 2008
Seite
Microsoft Expression Web 3
Seite Microsoft Expression
Seite




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

Pixel X weitere Premium-Partner
 

:: SELFPHP Sponsor ::

Sedo GmbH weitere Sponsoren
 

:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework 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


MD5-Hash-Summe überprüfen

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

SELFPHP Code Snippet


Vorkommen von HTML-Elementen finden

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