:: 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!
|
|
Backup einer Webseite 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
Backup einer Webseite mit automatischem FTP-Upload
Beschreibung
Nachfolgend möchten wir Ihnen eine Klasse in PHP5 vorstellen, mit der Sie eine komplette Webseite zippen und auf einem entfernten FTP-Server speichern können. Das Sichern von Dateien und Datenbanken sollte eine sehr hohe Stellung bei einem Internetauftritt haben um bei einem eventuellen Verlust aller Dateien immer ein Spiegel parat zu haben.
In einem vorangegangenen Beispiel haben wir Ihnen gezeigt, wie Sie eine komplette Datenbank zippen und auf einem entfernten FTP-Server speichern können. Heute zeigen wir Ihnen das fehlende Glied um wirklich ein kompletten Internetauftritt sichern zu können. Sie müssen lediglich einige wenige Parameter setzen um den Vorgang starten zu können.
Wir empfehlen Ihnen den Vorgang automatisiert auszuführen damit auch das backup immer wieder zu einer gegebenen Zeit durchgeführt wird. Hierzu raten wir Ihnen zu einem CronJob, der diese Aufgabe zuverlässig erledigen wird. Wenn Sie einen eigenen Server haben, werden Sie sicherlich auch einen CronJob einrichten können, falls nicht bieten sich hierfür CronJob-Dienste wie der von SELFPHP an.
Folgende Funktionalitäten beinhaltet unser Beispiel:
+ Speichern eines kompletten Verzeichnisses mit allen Unterverzeichnissen und Dateien
+ Zeitstempel der gezippten Datei im Dateinamen
+ Auswahl von ZIP, BZIP2 oder TARGZ als Komprimierung
+ Speichern auf entfernten FTP-Server
+ Rückgabe der Dateigröße der gezippten Datei
+ Rückgabe der Verbindungsgeschwindigkeit zwischen den Servern
+ Rückgabe der Gesamtzeit für den Kopiervorgang auf den anderen Server
Datei: Directory_Backup_Service.php
<?php
/**
* Directory_Backup_Service
*
* PHP5 Class Directory Backup
* Required: PHP 5 >= 5.1.2
*
* @package Directory_Backup_Service
* @author Damir Enseleit
* @copyright 2013, SELFPHP OHG
* @license BSD License
* @version 1.0.0
* @link http://www.selfphp.de
*
*/
class Directory_Backup_Service {
/**
* @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 = ''; // FTP Host
private $ftpPfad = '/html/backuptest/'; // Pfad auf dem Backupserver mit führendem und endendem Slash!
/**
* Constructor
*/
function __construct( ) {
$this->timeBackup = date("Y-m-d_H-i-s");
}
/**
* Backup komprimieren
*/
public function startBackup( $dateiName, $backupName ) {
$tarName = $backupName . '_' . $this->timeBackup;
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);
}
/**
* 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;
}
}
?>
|
Datei: start_Directory_Backup_Service.php
<?php
include_once ('Directory_Backup_Service.php');
$fileBackup = new Directory_Backup_Service( );
// Backup erstellen
$fileBackup->startBackup( '../imagemagicktest/', 'selfphp' );
// FTP-Upload starten
$infoF = $fileBackup->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: 1068462
Geschwindigkeit: 2007575
Gesamtzeit: 0.532215 |
|
|
|
|
|
:: 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!
SELFPHP Code Snippet
Sicheres Passwort erzeugen
Weitere interessante Code Snippets finden Sie auf SELFPHP im Bereich PHP Code Snippets
|