Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
einfacher Mysql Backup mit PHP?? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
einfacher Mysql Backup mit PHP??


 
Simon6785
08-08-2004, 13:41 
 
Hallo, ich hab, um meine Datenbank zu sichern dieses Script ausprobiert:
THREAD (http://www.php-resource.de/forum/showthread.php?s=&threadid=39984&highlight=mysql+backup)

Nur ich bekomme es einfach nicht ans laufen. Was muss ich denn wo einstellen, damit einfach alle 5 Tage ein Backup geschrieben wird? Dieses Backup soll auf ein im Server eingebautes ZIP Laufwerk geschrieben werden. Und vor allem sollen diese ganzen Meldungen und die GUI weg, der User soll davon nichts mitbekommen. Auch würde ich die Backup dateien gern mit PHP wieder einlesen können. Wie geht das den dann?Also ic hhab nen Apache hier installiert, habe folglich alle Rechte, nur ich kapier nicht wo ich was einstellen muss.... HELFT MIR, danke

 
Abraxax
08-08-2004, 13:43 
 
Was muss ich denn wo einstellen, damit einfach alle 5 Tage ein Backup geschrieben wird? cronjob



und was hat das jetzt mit php zu tun?

*VERSCHIEB* zu den install/config fragen

 
Simon6785
08-08-2004, 20:46 
 
also ich hab mir jetzt diesen Code im INternet gesucht, funzt einwandfrei:


<?php
// Script Konfiguration
$db_host = "localhost"; // Hostname
$db_user = "web27"; // DB User
$db_pw = "mischa"; // Passwort
$db_name = "usr_web27_1"; // Datenbank-Name
define('MYSQL_HOST', 'localhost');
define('MYSQL_USER', 'web27');
define('MYSQL_PASS', 'mischa');
define('MYSQL_DATABASE', 'usr_web27_1');
error_reporting(E_ALL);

mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR
die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error());
mysql_select_db(MYSQL_DATABASE) OR
die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error());
$path = "dump/";
// -----------------------------------------------------
// Don't change the lines below:
if (!is_dir($path)) { mkdir($path, 0777); }
echo "<b>Datenbank Dump</b><br><br><br>";
echo "Servername: '".$db_host."'<br>";
echo "Betriebssystem: ".php_uname()."<br>";
echo "MySQL-Version: ".mysql_get_server_info()."<br>";
echo "PHP - Version: ".phpversion()."<br><br>";
echo "<table border=\"1\">";
echo "<tr><td>DB Name</td><td>Anzahl Tabellen</td><td>Größe</td></tr>";
echo "<tr><td>$db_name</td>";
$database = $db_name;
$zaehler = 0;
$file_name = $path.$database."_".date("Y-m-d_H-i").".sql";
$text = "# --------------------------------------------------------\r\n";
$text .= "# DATENBANK DUMP\r\n";
$text .= "# Host: ".$db_host."\r\n";
$text .= "# Erstellungszeit: ".date("d. F Y")." um ".date("H:i")."\r\n";
$text .= "# Server Betriebssystem: ".php_uname()."\r\n";
$text .= "# MySQL-Version: ".mysql_get_server_info()."\r\n";
$text .= "# PHP-Version: ".phpversion()."\r\n";
$text .= "# Datenbank: `$database`\r\n";
$text .= "# --------------------------------------------------------\r\n\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $text);
fclose($fd);
// Alle Datenbanken auf dem Server suchen
$c = 0;
$result2 = @mysql_list_tables($database);
// Tabellenname Array auslesen und aufbauen
for ($i = 0; $i < @mysql_num_rows($result2); $i++)
{
$tabelle = @mysql_tablename($result2,$i);
if ($tabelle != "") {
$tbl_array[$c] = @mysql_tablename($result2,$i);
$c++;
$zaehler++;
}

}

echo "<td align=\"right\">".$zaehler."</td>";
// Start Ausgabe und Berechnung
for ($y = 0; $y < $c; $y++) {
$tabelle = $tbl_array[$y];
// Struktur der Tabelle einlesen
unset($def,$index);
$def .= "DROP TABLE IF EXISTS $tabelle;\r\n";
$def .= "CREATE TABLE $tabelle (\r\n";
$result3 = @mysql_db_query($database, "SHOW FIELDS FROM $tabelle");
while ($row = @mysql_fetch_array($result3)) {
$def .= " ".$row["Field"]." ".$row["Type"];
if ($row["Default"] != "") { $def .= " DEFAULT '".$row["Default"]."'"; }
if ($row["Null"] != "YES") { $def .= " NOT NULL"; }
if ($row["Extra"] != "") { $def .= " ".$row["Extra"]; }
$def .= ",\r\n";
}
$def = ereg_replace(",\r\n$", "", $def);
$result3 = @mysql_db_query($database, "SHOW KEYS FROM $tabelle");
while ($row = @mysql_fetch_array($result3)) {
$kname = $row["Key_name"];
if (($kname != "PRIMARY") && ($row["Non_unique"] == 0)) { $kname = "UNIQUE|".$kname; }
if (!isset($index[$kname])) { $index[$kname] = array(); }
$index[$kname][] = $row["Column_name"];
}
while (list($xy, $columns) = each($index)) {
$def .= ",\r\n";
if ($xy == "PRIMARY") $def .= " PRIMARY KEY (".implode($columns, ", ").")";
else if (substr($xy,0,6) == "UNIQUE") $def .= " UNIQUE ".substr($xy,7)." (".implode($columns, ", ").")";
else $def .= " KEY $xy (".implode($columns, ", ").")";
}
$def .= "\r\n);\r\n\r\n";
// Ende Struktur Modul
$db = @mysql_select_db($database);
$tabelle = "".$tabelle;
$text = "#\r\n# Daten für Tabelle `$tabelle`\r\n#\r\n\r\n";
$fd = fopen($file_name,"a+");
fwrite($fd, $text.$def);
fclose($fd);
unset($data);
if ($tabelle > "") {
$ergebnis[] = @mysql_select_db($database);
$result = @mysql_query("SELECT * FROM $tabelle");
$anzahl = @mysql_num_rows($result);
$spaltenzahl = @mysql_num_fields($result);
for ($i = 0; $i < $anzahl; $i++) {
$zeile = @mysql_fetch_array($result);
$data .= "INSERT INTO $tabelle (";
for ($spalte = 0; $spalte < $spaltenzahl; $spalte++) {
$feldname = @mysql_field_name($result, $spalte);
if ($spalte == ($spaltenzahl - 1)) {
$data.= $feldname;
} else {
$data.= $feldname.",";
}
}
$data .= ") VALUES (";
for ($k=0;$k < $spaltenzahl;$k++) {
if ($k == ($spaltenzahl - 1)) {
$data .= "'".addslashes($zeile[$k])."'";
} else {
$data .= "'".addslashes($zeile[$k])."',";
}
}
$data .= ");\r\n";
}
$data .= "\r\n";
} else {
$ergebnis[] = "Keine Tabelle übergeben";
}

$fd = fopen($file_name,"a+");
fwrite($fd, $data);
fclose($fd);
}
$groesse = filesize($file_name) / 1024;
echo "<td align=\"right\">".number_format($groesse,2)." KB</td></tr>";
echo "</table><br>";
echo "Das DB - Backup wurde erfolgreich durchgeführt.<BR>Die Dateien befinden sich im Verzeichniss /".$path."<BR>";
?>


Funzt auch wunderbar, ich bekomme eine schöne, fertige SQL Datei. Nur bekomme ich auch etwa eine Seite fehler. Immer die gleichen:

Notice: Undefined variable: def in /home/www/web27/html/backup.php on line 67

Notice: Undefined variable: data in /home/www/web27/html/backup.php on line 107

Warning: Variable passed to each() is not an array or object in /home/www/web27/html/backup.php on line 85

Kann mir wer sagen wo die wechkommen, oder auc heinfach nur, wie ich diese Fehlermeldungen abschalten kann (funzt ja...)

//EDIT
hab einfach mit ERROR_REPORTING(0) abgeschaltet...

noch ne frage, ich kann ja mit $path = "dump/"; den Ordner für die Dateien angeben. Kann ich denn dort auch den Pfad zu meinem Zip-Laufwerk eingeben, das ja im Server sitzt z.b. Z:\dump\

 
oppi
09-08-2004, 10:14 
 
hab einfach mit ERROR_REPORTING(0) abgeschaltet...
aua
schreib lieber anstatt unset($def,$index);das hier $def='';
$index=array();
Kann ich denn dort auch den Pfad zu meinem Zip-Laufwerk eingeben, das ja im Server sitzt z.b. Z:\dump\ Ausprobieren?

 
Simon6785
09-08-2004, 12:14 
 
ja, klar, ausprobieren geht leider im Moment noch nicht, da ich erst auf nem normalen Webserverr entwickle, und dann das fertige Programm auf den Server spiele... deshalb müsste ich das schon voher wissen....

 
Abraxax
09-08-2004, 12:43 
 
dann stelle dir eben eine vernünftige entwicklungsumgebung zusammen, wo du auch mit echten daten spielen kannst!

 
Simon6785
09-08-2004, 19:04 
 
hm
nun, wie sieht es denn generell aus, kan nein Apache auf ein Verzeichniss ausserhalb von htdocs zugreifen?

 
Abraxax
09-08-2004, 20:00 
 
apache kann nur auf das zugreifen, was erlaubt/konfiguriert ist.

 
Simon6785
09-08-2004, 20:00 
 
wo konfiguriert man das?

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:51 Uhr.