Autor | Zpráva | ||
---|---|---|---|
Cakewalk Profil |
#1 · Zasláno: 8. 11. 2011, 10:45:44
Dobrý den,
uměl by někdo upravit script na automatické zálohování databáze? Našel jsem tento jediný funkční script: <?php function zalohuj($db,$soubor=""){ $text=""; function keys($prefix,$array){ $array=Array(); $radky=""; $pocet = count($array); $posledni = $pocet-1; if($pocet == 0) return; for($i = 0; $i<$pocet; $i++){ if($i != $posledni) $carka = ","; else $carka = ""; $radky .= "`$array[$i]`$carka"; } return ",\n$prefix($radky)"; } $sql = mysql_query("SHOW TABLE STATUS FROM $db"); while($data = mysql_fetch_array($sql)){ $PRI=$UNI=$MUL=""; $text .= "--\n-- Struktura tabulky $data[0]\n--\n\n"; $text .= "CREATE TABLE `$data[0]`(\n"; $sqll = mysql_query("show columns from $data[0]") or die ("Nastala chyba: " . mysql_error()); $e = true; while($dataa = mysql_fetch_array($sqll)){ if($e){ $e = false; } else $text .= ",\n"; $null = ($dataa[2] == "NO")? "NOT NULL":"NULL"; $default = !empty($dataa[4])? " DEFAULT '$dataa[4]'":false; if($default == " DEFAULT 'CURRENT_TIMESTAMP'") $default = " DEFAULT CURRENT_TIMESTAMP"; if($dataa[3] == "PRI") $PRI[] = $dataa[0]; if($dataa[3] == "UNI") $UNI[] = $dataa[0]; if($dataa[3] == "MUL") $MUL[] = $dataa[0]; $extra = !empty($dataa[5])? " ".$dataa[5]:false; $text .= "`$dataa[0]` $dataa[1] $null$default$extra"; } $primary = keys("PRIMARY KEY",$PRI); $unique = keys("UNIQUE KEY",$UNI); $mul = keys("INDEX",$MUL); $text .= "$primary$unique$mul\n) ENGINE=$data[Engine] COLLATE=$data[Collation];\n\n"; unset($PRI,$UNI,$MUL); #data $text .= "--\n-- Data tabulky $data[0]\n--\n\n"; $query = mysql_query("SELECT * FROM $data[0]"); while($fetch = mysql_fetch_array($query)){ $values=""; $pocet_sloupcu = count($fetch)/2; $i = 0; while($i < $pocet_sloupcu){ if($i < $pocet_sloupcu-1) $carka = ","; else $carka = ""; $values .= "'".mysql_escape_string($fetch[$i])."'$carka"; $i++; } $text .= "\nINSERT INTO `$data[0]` VALUES($values);"; unset($values); } } if(!empty($soubor)){ $fp = @fopen($soubor,"w+"); $fw = @fwrite($fp,$text); @fclose($fp); } return $text; } $hostiteldb="localhost"; $jmenodb="jmeno.database.cz"; $heslodb="heslo"; $db="jmeno_database_cz"; mysql_connect($hostiteldb, $jmenodb, $heslodb); mysql_query("SET NAMES 'utf8'"); mysql_select_db($db); $text = zalohuj($db,"zaloha_mysql".date("-d-m-Y").".sql"); ?> Uměl by někdo upravit tento kód, aby se soubor automaticky komprimoval do zip nebo gz. Přidal do zálohy i DROP TABLE. Upravil kód tak, aby byly tyto dvě tabulky stejné. backup databáze tak jak ho potřebuji: DROP TABLE IF EXISTS `d3_backup`; CREATE TABLE `d3_backup` ( `settings` text NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8; # # Dumping data for table `d3_backup` # INSERT INTO `d3_backup` VALUES ('a:3:{i:0;s:1:\"Y\";i:1;s:1:\"Y\";i:2;s:1:\"1\";}'); # # Table structure for table `d3_boxes` # DROP TABLE IF EXISTS `d3_boxes`; CREATE TABLE `d3_boxes` ( `box_id` bigint(20) NOT NULL auto_increment, `box_name` varchar(255) default NULL, `theorder` int(20) NOT NULL default '0', `side` varchar(20) NOT NULL default 'left', `show` varchar(20) NOT NULL default 'links', `content` text, `fed_update` int(10) NOT NULL default '3600', `fed_item` int(10) NOT NULL default '0', `strip_html` varchar(5) NOT NULL default 'false', `user` varchar(25) NOT NULL default 'all', `direction` varchar(5) NOT NULL default 'up', `enabled` tinyint(1) NOT NULL default '0', PRIMARY KEY (`box_id`) ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; backup databáze přes výše uvedený script -- -- Struktura tabulky d3_backup -- CREATE TABLE `d3_backup`( `settings` text NOT NULL ) ENGINE=MyISAM COLLATE=utf8_general_ci; -- -- Data tabulky d3_backup -- INSERT INTO `d3_backup` VALUES('a:3:{i:0;s:1:\"Y\";i:1;s:1:\"Y\";i:2;s:1:\"1\";}');-- -- Struktura tabulky d3_boxes -- CREATE TABLE `d3_boxes`( `box_id` bigint(20) NOT NULL auto_increment, `box_name` varchar(255) NULL, `theorder` int(20) NOT NULL, `side` varchar(20) NOT NULL DEFAULT 'left', `show` varchar(20) NOT NULL DEFAULT 'links', `content` text NULL, `fed_update` int(10) NOT NULL DEFAULT '3600', `fed_item` int(10) NOT NULL, `strip_html` varchar(5) NOT NULL DEFAULT 'false', `user` varchar(25) NOT NULL DEFAULT 'all', `direction` varchar(5) NOT NULL DEFAULT 'up', `enabled` tinyint(1) NOT NULL ) ENGINE=MyISAM COLLATE=utf8_general_ci; Předem díky za všechny rady. |
||
__construct Profil |
#2 · Zasláno: 8. 11. 2011, 10:57:45
Cakewalk:
> Uměl by někdo upravit tento kód, aby se soubor automaticky komprimoval do zip nebo gz. > Přidal do zálohy i DROP TABLE. > Upravil kód tak, aby byly tyto dvě tabulky stejné. Určite vedel — na to je tu sekcia Práce a zakázky. Pokiaľ, ale chceš pomôcť, napíš s čím si nevieš rady. |
||
Cakewalk Profil |
#3 · Zasláno: 8. 11. 2011, 11:17:59
No potřeboval bych aby výstupní záloha byla komprimovaná. Něco jako toto, ale nevím, jak to mám zavést do toto scriptu:
function gzcompressfile($source,$level=false) { $dest=$source.'.gz'; $mode='wb'.$level; $error=false; if($fp_out=gzopen($dest,$mode)) { if($fp_in=fopen($source,'rb')) { while(!feof($fp_in))gzwrite($fp_out,fread($fp_in,4096)); fclose($fp_in); } else $error=true; gzclose($fp_out); } else $error=true; if($error) return false; else return $dest; } No a nevím, jakým způsobem mám do zálohy zavést DROP TABLE. Navíc ty zálohy se v některých kritériích liší, potřeboval bych, aby byly stejné. |
||
Časová prodleva: 12 let
|
0