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:
 
 
 
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

PSW GROUP GmbH & Co. KG weitere Premium-Partner
 

:: SELFPHP Sponsor ::

HighText Verlag Graf und Treplin OHG weitere Sponsoren
 


:: Buchempfehlung ::

Handbuch der Java-Programmierung

Handbuch der Java-Programmierung 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


Speichergröße eines Verzeichnisses ermitteln

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

SELFPHP Code Snippet


Ein Bild on-the-fly vertikal spiegeln

Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
 
© 2001-2023 E-Mail SELFPHP Inh. Damir Enseleit, info@selfphp.deImpressumKontakt