Paieška

FDisk (2009-06-25 23:47:15 ) :: [MM MODULIS] atsargines duomenu bazes kopijos

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
Atsidarykite dizaino index.php failą ir jame įrašykite:
<?php include_once('db_atsargines_kopijos/backup.php'); ?>
Eikite į pagrindinį tvs folderį ir 
sukurkite direktoriją pavadinimu "db_atsargines_kopijos/dump/". 
Uždėkite 777 teises ant "dump" direktorijos, 
kad serveris galėtų įrašyti į jį failus.

backup.php failo turinys:
<?php
header
('Content-type: text/html; charset=UTF-8') ;
// mySQL - variables
$dbhost="localhost";
$dbuser="root";   //Prisijungimo prie duomenų bazės vartotojo vardas
$dbpass="";   //Prie duomenų bazės prisijungim oslaptažodis
$dbname="mightmedia";   //Duomenų bazės pavadinimas

// kiek kopijų saugoti
$backups 7;

// kas kiek laiko daryti kopijas - valandomis
$interval 24;

// 1 only with ZLib support, else change value to 0
$compression 0;

// pilnas kelias iki šio failo (keisti nebūtina)
$path=realpath(dirname(__file__)).'/';

// DO NOT CHANGE THE LINES BELOW

flush();

$path $path "dump/";
if (!
is_dir($path)) mkdir($path0777);

function 
get_def($dbname$table) {
    global 
$conn;
    
$def "";
    
$def .= "DROP TABLE IF EXISTS $table;#%%\n";
    
$def .= "CREATE TABLE $table (\n";
    
$result mysql_query("SHOW FIELDS FROM $table",$conn);
    while(
$row mysql_fetch_array($result)) {
        
$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_query("SHOW KEYS FROM $table",$conn);
     while(
$row mysql_fetch_array($result)) {
          
$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) {
     global 
$conn;
     
$content="";
     
$result mysql_query("SELECT * FROM $table",$conn);
     while(
$row mysql_fetch_row($result)) {
         
$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 .= "'".addslashes($row[$j])."',";
            else 
$insert .= "'',";
         }
         
$insert ereg_replace(",$","",$insert);
         
$insert .= ");#%%\n";
         
$content .= $insert;
     }
     return 
$content;
}

if (
$compression==1$filetype "sql.gz";
else 
$filetype "sql";

if (!
is_file($path "0.$filetype") || filemtime($path "0.$filetype") < time() - $interval 3600 && !eregi("/restore\.",$PHP_SELF)) {
    for (
$i $backups-1$i 0$i--) {
        
$oldname $i-".$filetype";
        
$newname $i ".$filetype";
        if (
is_file($path.$oldname))
            
rename($path.$oldname,$path.$newname);
    }

    
$conn mysql_connect($dbhost,$dbuser,$dbpass) or die(mysql_error());
    
mysql_select_db($dbname,$conn) or die(mysql_error());
    
mysql_query("SET NAMES 'utf8'",$conn);
    
    
$cur_time=date("Y-m-d H:i");
    
$newfile="# Dump created on $cur_time\r\n";
    
$tables mysql_list_tables($dbname,$conn);
    
$num_tables mysql_num_rows($tables);
    
$i 0;
    while(
$i $num_tables) { 
       
$table mysql_tablename($tables$i);
    
       
$newfile .= "\n# ----------------------------------------------------------\n#\n";
       
$newfile .= "# structur for table '$table'\n#\n";
       
$newfile .= get_def($dbname,$table);
       
$newfile .= "\n\n";
       
$newfile .= "#\n# data for table '$table'\n#\n";
       
$newfile .= get_content($dbname,$table);
       
$newfile .= "\n\n";
       
$i++;
    }
    
    if (
$compression==1) {
        
$fp gzopen($path."0.$filetype","w9");
        
gzwrite ($fp,$newfile);
        
gzclose ($fp);
        
chmod($path."0.$filetype",0777);
    } else {
        
$fp fopen ($path."0.$filetype","w");
        
fwrite ($fp,$newfile);
        
fclose ($fp);
        
chmod($path."0.$filetype",0777);
    }
    echo 
"<!-- # Dump created on $cur_time -->\r\n";
    
mysql_close($conn);
}
?>

Rašyti komentarą

Prašome prisijungti!

Komentarai

# zlotas (2010-07-19 13:33:51 )
avataras
Čia problemikė yra x) su šiuo include :) nesirefrešina šaukykla :)