tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
Like Tree1Danke
ERLEDIGT
JA
ANTWORTEN
19
ZUGRIFFE
1800
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    as333 as333 ist offline Mitglied Gold
    Registriert seit
    Jul 2009
    Beiträge
    139
    Hi,

    also wenn ich es ausführe bekomme ich die Meldung das es ausgeführt worden ist und eine neue Datei angelegt worden wäre:
    Code :
    1
    
    # Dump created with phpMyBackup on 2009-08-29 13:08

    Aber wo wird denn die Datei hingelegt?
    Ich kann die nirgends finden.
     

  2. #17
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Ich gebe zu, das ist eher sub-optimal. Am besten wäre es, wenn du folgende Zeile suchst:

    PHP-Code:
    $filename $db_name.".".$cur_date.".sql"
    und vor den Dateinamen noch einen absoluten Pfad einfügst:

    PHP-Code:
    $filename "/pfad/irgendwo/im/dateisystem/des/webservers" $db_name.".".$cur_date.".sql"
    Du könntest als Pfad z.B. den Ordner verwenden, der auf deinem Webserver DOCUMENT_ROOT darstellt. Dann werden die Backups direkt in den Webordner geschoben und du kannst sie direkt über den Browser abholen. Das würde ich allerdings nicht so lassen. Besser du erstellst einen Ordner in deinem DOCUMENT_ROOT und lässt die Backups dort hin schreiben. Diesen neuen Ordner schützt du mit .htaccess, damit keiner außer dir die SQL-Backups ansehen kann.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  3. #18
    as333 as333 ist offline Mitglied Gold
    Registriert seit
    Jul 2009
    Beiträge
    139
    Hi,

    ich habe es wie du beschrieben hast geändert.
    Es wird jetzt auch eine Textdatei erstellt,
    in der aber nur
    Code :
    1
    
    # Dump created with phpMyBackup on 2009-08-29 14:12
    steht.

    Weißt du vielleicht wodran das liegen kann?
     

  4. #19
    Avatar von saftmeister
    saftmeister saftmeister ist gerade online Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Könnte sein, das ein Fehler im Script ist. Du solltest überall dort, wo mysql-Funktionen verwendet werden, eine Prüfung einbauen. Ich habe das mal für dich erledigt:

    PHP-Code:
    <?php
    define
    ("SAVE_PATH""/my/save/path/to/store/backups");
    define("DB_TO_BACKUP""foo");

    function 
    logger($text_to_log)
    {
        
    $cur_time=date("Y-m-d H:i");
        
    $handle fopen(SAVE_PATH "/backup.log""a");
        if(
    $handle)
        {
            
    fputs($handle"$cur_time\t$text_to_log\n");
            
    fclose(handle);
        }
    }

    function 
    get_def($dbname$table) {
        
    $def "";
        
    $def .= "DROP TABLE IF EXISTS $table;\n";
        
    $def .= "CREATE TABLE $table (\n";
        
    $result mysql_db_query($dbname"SHOW FIELDS FROM $table") or logger(mysql_error());
        while(
    $row mysql_fetch_array($result)) {
            if(
    mysql_error()) logger(mysql_error());
            
    $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 .= ",\n";
         }
         
    $def ereg_replace(",\n$",""$def);
         
    $result mysql_db_query($dbname"SHOW KEYS FROM $table") or logger(mysql_error());
         while(
    $row mysql_fetch_array($result)) {
            if(
    mysql_error()) logger(mysql_error());
                
            
    $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(
    $x$columns) = @each($index)) {
              
    $def .= ",\n";
              if(
    $x == "PRIMARY"$def .= "   PRIMARY KEY (" implode($columns", ") . ")";
              else if (
    substr($x,0,6) == "UNIQUE"$def .= "   UNIQUE ".substr($x,7)." (" implode($columns", ") . ")";
              else 
    $def .= "   KEY $x (" implode($columns", ") . ")";
         }

         
    $def .= "\n);";
         return (
    stripslashes($def));
    }

    function 
    get_content($dbname$table) {
        
    $content="";
        
    $result mysql_db_query($dbname"SELECT * FROM $table") or logger(mysql_error());
        while(
    $row mysql_fetch_row($result)) {
            if(
    mysql_error()) logger(mysql_error());
            
    $insert "INSERT INTO $table VALUES (";
            for(
    $j=0$j<mysql_num_fields($result);$j++) {
                if(!isset(
    $row[$j])) $insert .= "NULL,";
                else if(
    $row[$j] != ""$insert .= "'".$row[$j]."',";
                else 
    $insert .= "'',";
            }
            
    $insert ereg_replace(",$","",$insert);
            
    $insert .= ");\n";
            
    $content .= $insert;
        }
        return 
    $content;
    }

    function 
    backup($db_name$send true)
    {
        
    $cur_date=date("Y-m-d");
        
    $cur_time=date("Y-m-d H:i");
        
    $newfile="# Dump created with phpMyBackup on $cur_time\r\n";
        
    $tables mysql_list_tables($db_name) or logger(mysql_error());
        
    $num_tables = @mysql_num_rows($tables) or logger(mysql_error());
        
    $i 0;
        while(
    $i $num_tables) { 
           
    $table mysql_tablename($tables$i) or logger(mysql_error());
        
           
    $newfile .= "\n# ----------------------------------------------------------\n#\n";
           
    $newfile .= "# structur for table '$table'\n#\n\n";
           
    $newfile .= get_def($db_name,$table);
           
    $newfile .= "\n\n";
           
    $newfile .= "#\n# data for table '$table'\n#\n\n";
           
    $newfile .= get_content($db_name,$table);
           
    $newfile .= "\n\n";
           
    $i++;
        }

        
    $filename SAVE_PATH "/" $db_name.".".$cur_date.".sql";
        
    $fp fopen ("$filename","w");
        
    fwrite ($fp,$newfile);
        
    fclose ($fp);
        

        if(
    $send != false)
        {
            
    header("Content-Type: text/sql");
            
    header("Content-Disposition: attachment; filename=$filename");
            
    readfile("$filename");
            
    unlink($filename);
        }
        else
            return(
    $filename);
    }

    backup(DB_TO_BACKUPfalse);
    ?>
    Du brauchst eigentlich lediglich die defines anpassen. Wenn ein Fehler aufgetreten sein sollte, wird das in ein Log-File am Speicher-Ort abgelegt, was du dann einsehen kannst. Notfalls bitte die Meldungen aus dem Log-File posten.
     
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  5. #20
    as333 as333 ist offline Mitglied Gold
    Registriert seit
    Jul 2009
    Beiträge
    139
    Hi saftmeister,

    habs angepasst und es funktioniert.
    Geändert von as333 (29.08.09 um 15:14 Uhr)
     

Ähnliche Themen

  1. Zustand über mehere Funktionsaufrufe sichern über arguments.callee
    Von Thomas Darimont im Forum Javascript & Ajax
    Antworten: 0
    Letzter Beitrag: 15.01.11, 21:45
  2. MySQL-Datenbank sichern via PHP
    Von matze93 im Forum PHP
    Antworten: 5
    Letzter Beitrag: 09.06.10, 21:50
  3. MySQl-Datenbank mit Java sichern (Hibernate)
    Von cuchulainn im Forum Enterprise Java (JEE, J2EE, Spring & Co.)
    Antworten: 1
    Letzter Beitrag: 17.04.09, 15:57
  4. Forum in PHP über MySQL Datenbank?
    Von jackie05 im Forum PHP
    Antworten: 3
    Letzter Beitrag: 22.05.07, 22:58
  5. MySQL Datenbank automatisiert sichern
    Von Robert Steichele im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 26.07.05, 07:30

Stichworte