:: Anbieterverzeichnis :: Globale Branchen
:: 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!
|
|
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($handle, CURLOPT_URL, $url);
curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($handle, CURLOPT_UPLOAD, 1);
curl_setopt($handle, CURLOPT_INFILE, $fp);
curl_setopt($handle, CURLOPT_INFILESIZE, filesize($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: BrowseransichtDateigröße: 1621817
Geschwindigkeit: 5363736
Gesamtzeit: 0.302367
|
|
|
|
|
|


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