Hallo Forum,
ich versuche ein Backup-Script mit Hilfe der archive.php zu erstellen.
Diese Script macht mir einen SQL-Dump und ein Backup der Website.
Leider bekomme ich nach dem Download immer die Nachricht, "Fehler in gepackter Datei. Lasse ich die Datei auf dem Server und lade diese per ftp herunter, geht's.
Hier mal der Code meines Scripts:
Die Klasse ist im Anhang.
Hoffe mir kann jemand helfen.
Danke
Tom
ich versuche ein Backup-Script mit Hilfe der archive.php zu erstellen.
Diese Script macht mir einen SQL-Dump und ein Backup der Website.
Leider bekomme ich nach dem Download immer die Nachricht, "Fehler in gepackter Datei. Lasse ich die Datei auf dem Server und lade diese per ftp herunter, geht's.
Hier mal der Code meines Scripts:
PHP-Code:
<?php
include('ct_config.php');
include(CT_ADDON_PATH.'archive/archive.php');
require_once(CT_CLASS_PATH.'ct_user.php');
//echo CT_CORE_PATH.'archive/archive.php<br />';
//echo CT_TMP_PATH.'example.zip<br />';
$mysql_config = $GLOBALS['CT_DB_DATA'];
$user_obj = new ctUser();
$error = false;
if( (!$user_obj->isSystemAdmin()) || ($user_obj->isAdmin()) || ($user_obj->isGroupAnonymous())){
echo '<div style="text-align: center;">Sie haben nicht die Berechtigung ein Backup auszuführen!</div>';
exit;
}
$mysql_dump = CT_TMP_PATH.'mysql.sql';
$web_zip = CT_TMP_PATH.'web.zip';
$mysql_zip = CT_TMP_PATH.'mysql.zip';
$filename = 'backup'.date("_Y-m-d_H-i-s").'.zip';
$backup_zip = CT_TMP_PATH.$filename;
$dbhost = $mysql_config->host;
$dbuser = $mysql_config->username;
$dbpwd = $mysql_config->password;
$dbname = $mysql_config->database;
//MySQL Dump
echo 'MySQL-Dump erzeugen!<br />';
$conn = @mysql_connect($dbhost, $dbuser, $dbpwd);
if (!$conn) {
die(mysql_error());
}
mysql_select_db($dbname);
$f = fopen($mysql_dump, "w");
$tables = mysql_list_tables($dbname);
while ($cells = mysql_fetch_array($tables)) {
$table = $cells[0];
fwrite($f,"DROP TABLE `$table`;\n");
$res = mysql_query("SHOW CREATE TABLE `$table`");
if ($res) {
$create = mysql_fetch_array($res);
$create[1] .= ";";
$line = str_replace("\n", "", $create[1]);
fwrite($f, $line."\n");
$data = mysql_query("SELECT * FROM `$table`");
$num = mysql_num_fields($data);
while ($row = mysql_fetch_array($data)){
$line = "INSERT INTO `$table` VALUES(";
for ($i=1;$i<=$num;$i++) {
$line .= "'".mysql_real_escape_string($row[$i-1])."', ";
}
$line = substr($line,0,-2);
fwrite($f, $line.");\n");
}
}
}
fclose($f);
if(!$error){
$backup = new zip_file($mysql_zip);
$backup->set_options(array('inmemory' => 0, 'recurse' => 0, 'storepaths' => 0,'overwrite' => 1));
$backup->add_files($mysql_dump);
echo 'MySQL-Dump zippen!<br />';
$backup->create_archive();
if(count($backup->errors) > 0){
$error = true;
echo count($backup->errors).' Fehler beim MYSQL-Backup!<br />';
echo '<b>Fehler</b><pre>';
print_r($backup->errors);
echo '</pre>';
exit;
}
}
$backup = new zip_file($web_zip );
$backup->set_options(array('inmemory' => 0, 'recurse' => 1, 'storepaths' => 1,'overwrite' => 1));
$backup->add_files(CT_WEB_PATH);
echo 'WEBSITE zippen!<br />';
$backup->create_archive();
if(count($backup->errors) > 0){
$error = true;
echo count($backup->errors).' Fehler beim WEB-Backup!<br />';
echo '<b>Fehler</b><pre>';
print_r($backup->errors);
echo '</pre>';
exit;
}
if(!$error){
$backup = new zip_file($backup_zip );
$backup->set_options(array('inmemory' => 1, 'recurse' => 0, 'storepaths' => 0,'overwrite' => 1));
$backup->add_files(array($web_zip, $mysql_zip));
echo 'Backup zippen!<br />';
$backup->create_archive();
}
if(count($backup->errors) > 0){
$error = true;
echo count($backup->errors).' Fehler beim WEB-Backup!<br />';
echo '<b>Fehler</b><pre>';
print_r($backup->errors);
echo '</pre>';
exit;
}
unlink($mysql_dump);
unlink($web_zip);
unlink($mysql_zip);
if(!$error){
$backup->download_file();
}
?>
Hoffe mir kann jemand helfen.
Danke
Tom
Kommentar