Avatar billede supersquirrel Nybegynder
09. august 2008 - 14:42 Der er 3 kommentarer og
1 løsning

Lave jævnligt backup

Hejsa!

Denne hører måske også under PHP, men nu prøver vi her ;o)

Jeg søger en funktion (måske et script), der kan tage en backup i form af sql.sql e.l.

Hvis der findes et PHP script kan jeg bare få scriptet besøgt vha. cronjob
Avatar billede leif Seniormester
09. august 2008 - 15:44 #1
http://www.0php.com/MySQL-Backup.php
http://www.phpclasses.org/browse/package/1560.html


Men ja, det er muligt at lave. Jeg har ikke selv lavet det i PHP, da jeg tager backup via SSH
Avatar billede supersquirrel Nybegynder
09. august 2008 - 16:26 #2
Fandt selv:
<?
$backup_structure=TRUE;
$backup_data=TRUE;
$empty_table=FALSE;
$drop_table=TRUE;

function write2file($filename,$content){
   
        $handle=fopen($filename, 'w');
                     
        // Write $somecontent to our opened file.
        fwrite($handle, $content);
         
         
        //echo "Ba";
     
        fclose($handle);
        //echo "$filename has been created";

}

function backupstructure($tablename){
        $ress = mysql_query("describe `".$tablename."`");
 
 
    $a.="CREATE TABLE `".$tablename."` (\n";
    while ($rows = mysql_fetch_row($ress))
    {
        //foreach ($rows as $rowval)
        if ($rows)
        {
         
    //            echo $rowval .' | ';
                if(strlen($rows[4])==0){
                            $row4="";
                    }else{
                     
                        $row4="default '$rows[4]'";
                        }
                     
                if($rows[3]=="PRI"){
                                       
                    $primarykey="PRIMARY KEY  (`$rows[0]`)";
                }
                $a .="`$rows[0]` $rows[1] $rows[5] $row4,\n";
         
       
    }
     
 
    }
    $a.=$primarykey."\n);";
    return $a;
}


function backup($table){
    global $con;             
    $a ="";
    $sql= ("select * from $table");
    $result = mysql_query($sql) or die("SQL ERROR:<hr>".$sql);
    while($rs = mysql_fetch_object($result)) {             
        $b = ("insert into `$table` values (");
        foreach($rs as $tmp1 => $key){
            $key=str_replace("\n","<br>",$key);
            $key=str_replace("\r","<br>",$key);
            $b.= "'".addslashes($key)."',";
        }
        $a.= substr($b,0,strlen($b)-1).");\n";
    }
    mysql_free_result($result);
    $a."\n"; 
    return $a;         
}

$con = @mysql_connect('xxxxx', 'xxxxxx', 'xxxxxx') or die("<center><b>Connection Error</b></center>");
$current_database = 'xxxxx';


$trs = mysql_list_tables($current_database,$con);
            $tables=array();
            for($i=0; $i < mysql_num_rows($trs); $i++) {
                $output.="\n\n-- backup af ".mysql_tablename($trs,$i)."\n\n";
                if($empty_table==TRUE){
                    $output.="TRUNCATE TABLE `".mysql_tablename($trs,$i)."`;\n";
                }
                if($drop_table==TRUE){
                    $output.="DROP TABLE IF EXISTS `".mysql_tablename($trs,$i)."`;\n";
                }
                if($backup_structure==TRUE){
                    $output.=backupstructure(mysql_tablename($trs,$i))."\n\n";
                }
                if($backup_data==TRUE){
                    $output.= backup(mysql_tablename($trs,$i));
                }
            }
         
//echo $output;

$filename="backups/db_backup_".date("Y-m-d").".sql";

write2file($filename,$output);


?>

Men smid et svar og du skal få point ;o)
Avatar billede leif Seniormester
09. august 2008 - 22:55 #3
Snup de dem bare selv
Avatar billede supersquirrel Nybegynder
10. august 2008 - 01:12 #4
Jamen det gør jeg så.. svar :))
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester