Fabyo 66 Denunciar post Postado Março 23, 2005 Backup do banco mysql e ainda zipa o arquivo backup.php corridigo o problema era nas tags PHP que tinha dado pau auterando o script <?php mysql_connect("localhost", "usuario", "senha"); mysql_select_db("banco"); set_time_limit(0); function sqlAddslashes($str = '', $is_like = FALSE) { if ($is_like) { $str = str_replace('\\', '\\\\\\\\', $str); }else{ $str = str_replace('\\', '\\\\', $str); } $str = str_replace('\'', '\\\'', $str); return $str; } function dumptb($table) { $nline = "\n"; $dp = "CREATE TABLE $table ($nline"; $firstfield = 1; $fields_array = mysql_query("SHOW FIELDS FROM $table"); while ($field = mysql_fetch_array($fields_array)) { if (!$firstfield) { $dp .= ",\n"; }else{ $firstfield = 0; } $dp .= "\t".$field["Field"]." ". $field["Type"]; if (isset($field['Default']) && $field['Default'] != '') { $dp .= ' default \'' . sqlAddslashes($field['Default']) . '\''; } if ($field['Null'] != 'YES') { $dp .= ' NOT NULL '; } if (!empty($field["Extra"])) { $dp .= $field["Extra"]; } } mysql_free_result($fields_array); $keysindex_array = mysql_query("SHOW KEYS FROM $table"); while ($key = mysql_fetch_array($keysindex_array)) { $kname = $key['Key_name']; if ($kname != "PRIMARY" and $key['Non_unique'] == 0) { $kname = "UNIQUE|$kname"; } $index[$kname][] = $key['Column_name']; } mysql_free_result($keysindex_array); while(list($kname, $columns) = @each($index)) { $dp .= ",\n"; $colnames = implode($columns,","); if($kname == 'PRIMARY') { $dp .= "\tPRIMARY KEY ($colnames)"; }else{ if (substr($kname,0,6) == 'UNIQUE') { $kname = substr($kname,7); } $dp .= " KEY $kname ($colnames)"; } } $dp .= "\n);\n\n"; $rows = mysql_query("SELECT * FROM $table"); $numfields=mysql_num_fields($rows); while ($row = mysql_fetch_array($rows)) { $dp .= "INSERT INTO $table VALUES("; $fieldcounter=-1; $firstfield=1; while (++$fieldcounter<$numfields) { if(!$firstfield) { $dp .=' , '; }else{ $firstfield=0; } if (!isset($row[$fieldcounter])) { $dp .= 'NULL'; }else{ $dp .= "'".mysql_escape_string($row[$fieldcounter])."'"; } } $dp .= ");\n"; } mysql_free_result($rows); return $dp; } $file_name = date("d-m-Y").".txt"; $filehandle = fopen($file_name,'w'); $result = mysql_query("SHOW tables"); while ($row = mysql_fetch_array($result)) { fwrite($filehandle,dumptb($row[0])."\n\n\n"); } fclose($filehandle); require("zip_lib.php"); $zipfile = new zipfile(date("d-m-Y").".zip"); $zipfile->addFileAndRead($file_name); echo $zipfile->file(); ?> zip_lib.php: <?php class zipfile{ var $datasec = array(); var $ctrl_dir = array(); var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; function zipfile ($output_filename = 'archive.zip'){ header('Content-Type: application/x-zip'); header('Content-Disposition: inline; filename="' . $output_filename . '"'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public'); } function read_File ($file){ if (is_file($file)){ $fp = fopen ($file, 'rb'); $content = fread ($fp, filesize($file)); fclose ($fp); return $content; } } function addFileAndRead ($file){ if (is_file($file)) $this -> addFile($this -> read_File($file), $file); } function unix2DosTime($unixtime = 0){ $timearray = ($unixtime == 0) ? getdate() : getdate($unixtime); if ($timearray['year'] < 1980){ $timearray['year'] = 1980; $timearray['mon'] = 1; $timearray['mday'] = 1; $timearray['hours'] = 0; $timearray['minutes'] = 0; $timearray['seconds'] = 0; } return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); } function addFile($data, $name, $time = 0){ $name = str_replace('\\', '/', $name); $dtime = dechex($this -> unix2DosTime($time)); $hexdtime = '\x' . $dtime[6] . $dtime[7] . '\x' . $dtime[4] . $dtime[5] . '\x' . $dtime[2] . $dtime[3] . '\x' . $dtime[0] . $dtime[1]; eval('$hexdtime = "' . $hexdtime . '";'); $fr = "\x50\x4b\x03\x04"; $fr .= "\x14\x00"; // ver needed to extract $fr .= "\x00\x00"; // gen purpose bit flag $fr .= "\x08\x00"; // compression method $fr .= $hexdtime; // last mod time and date $unc_len = strlen($data); $crc = crc32($data); $zdata = gzcompress($data); $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); // fix crc bug $c_len = strlen($zdata); $fr .= pack('V', $crc); // crc32 $fr .= pack('V', $c_len); // compressed filesize $fr .= pack('V', $unc_len); // uncompressed filesize $fr .= pack('v', strlen($name)); // length of filename $fr .= pack('v', 0); // extra field length $fr .= $name; $fr .= $zdata; $fr .= pack('V', $crc); // crc32 $fr .= pack('V', $c_len); // compressed filesize $fr .= pack('V', $unc_len); // uncompressed filesize $this -> datasec[] = $fr; $new_offset = strlen(implode('', $this -> datasec)); $cdrec = "\x50\x4b\x01\x02"; $cdrec .= "\x00\x00"; // version made by $cdrec .= "\x14\x00"; // version needed to extract $cdrec .= "\x00\x00"; // gen purpose bit flag $cdrec .= "\x08\x00"; // compression method $cdrec .= $hexdtime; // last mod time & date $cdrec .= pack('V', $crc); // crc32 $cdrec .= pack('V', $c_len); // compressed filesize $cdrec .= pack('V', $unc_len); // uncompressed filesize $cdrec .= pack('v', strlen($name)); // length of filename $cdrec .= pack('v', 0); // extra field length $cdrec .= pack('v', 0); // file comment length $cdrec .= pack('v', 0); // disk number start $cdrec .= pack('v', 0); // internal file attributes $cdrec .= pack('V', 32); // external file attributes - 'archive' bit set $cdrec .= pack('V', $this -> old_offset); // relative offset of local header $this -> old_offset = $new_offset; $cdrec .= $name; $this -> ctrl_dir[] = $cdrec; } function file(){ $data = implode(NULL, $this -> datasec); $ctrldir = implode(NULL, $this -> ctrl_dir); return $data . $ctrldir . $this -> eof_ctrl_dir . pack('v', sizeof($this -> ctrl_dir)) . pack('v', sizeof($this -> ctrl_dir)) . pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00"; // .zip file comment length } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
thiagocodu 0 Denunciar post Postado Agosto 4, 2005 Eu devo chamar alguma função? Tipo: <!--php1--><div class='phptop'>PHP</div><div class='phpmain'><!--ephp1--><link href = "style_images/css_php.css" rel = "stylesheet" type = "text/css"> [*]<? [*]... [*]dumptb<span style=' color: green;'>(nome_da_minha_tabela)</span>; [*]... [*]?> <!--php2--></div><!--ephp2--> Ou é automático e ele faz o Backup de todas as tabelas do banco? Eu só preciso executar o script no meu servidor e na hora ele já faz o backup? Gostaria muito de entender e aprender a usar esse script. Agradeço, caso alguém possa me ajudar. Valeu! :unsure:/>/> Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Agosto 6, 2005 ele é automatico é só você contigurar a conexao e o nome do banco e pronto só executar o script Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Setembro 18, 2005 e onde ficara o backup?tem como configurar para ele enviar o backup para um site via ftp?onde eu configuro? Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Setembro 18, 2005 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15Parse error: parse error, unexpected T_STRING in c:\appserv\www\backup\backup.php on line 15deu tudo isso de erro no backup.php ¬¬porque sera? o codigo da igualzinho, so alterei essa parte:mysql_connect("localhost","root","");mysql_select_db("aff"); Compartilhar este post Link para o post Compartilhar em outros sites
italo 0 Denunciar post Postado Setembro 19, 2005 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15 Warning: Unexpected character in input: '\' (ASCII=92) state=1 in c:\appserv\www\backup\backup.php on line 15 Parse error: parse error, unexpected T_STRING in c:\appserv\www\backup\backup.php on line 15 deu tudo isso de erro no backup.php ¬¬ porque sera? o codigo da igualzinho, so alterei essa parte: mysql_connect("localhost","root",""); mysql_select_db("aff"); <{POST_SNAPBACK}> você possúi um banco de dados nomeado como aff?porque comigo o código funcionou sem nenhum problema!! Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Setembro 19, 2005 possuo sim amigo.já tentei mudar o nome e continuou dando erromas isso é para php4? Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Setembro 20, 2005 funciona em php4 ? Compartilhar este post Link para o post Compartilhar em outros sites
Tuba 0 Denunciar post Postado Dezembro 10, 2005 todo bugado o codigo eu depurei ele mais nao da erro ele gera um arquivo .txt com a minha base de dados mais nao zipa nem a pau <?PHP mysql_connect("localhost","root",""); mysql_select_db("renatoalves"); if (function_exists("set_time_limit") == 1 and get_cfg_var("safe_mode") == 0){ @set_time_limit(0); } function sqlAddslashes($str = '', $is_like = FALSE){ if ($is_like){ $str = str_replace('\a34f59274d50f313ec06e96e2620e117','\\\\\\\a34f59274d50f313ec06e96e2620e117', $str); } else{ $str = str_replace('\a34f59274d50f313ec06e96e2620e117','\\\a34f59274d50f313ec06e96e2620e117', $str); } $str = str_replace('a34f59274d50f313ec06e96e2620e117', '\\a34f59274d50f313ec06e96e2620e117', $str); return $str; } function dumptb($table){ $nline = "\n"; $dp = "CREATE TABLE $table ($nline"; $firstfield = 1; $fields_array = mysql_query("SHOW FIELDS FROM $table"); while ($field = mysql_fetch_array($fields_array)){ if (!$firstfield){ $dp .= ",\n"; } else{ $firstfield = 0; } $dp .= "\t".$field["Field"]." ". $field["Type"]; if (isset($field['Default']) && $field['Default'] != ''){ $dp .= ' default a34f59274d50f313ec06e96e2620e117' . sqlAddslashes($field['Default']) . 'a34f59274d50f313ec06e96e2620e117'; } if ($field['Null'] != 'YES'){ $dp .= ' NOT NULL '; } if (!empty($field["Extra"])){ $dp .= $field["Extra"]; } } mysql_free_result($fields_array); $keysindex_array = mysql_query("SHOW KEYS FROM $table"); while ($key = mysql_fetch_array($keysindex_array)){ $kname = $key['Key_name']; if ($kname != "PRIMARY" and $key['Non_unique'] == 0){ $kname = "UNIQUE|$kname"; } $index[$kname][] = $key['Column_name']; } mysql_free_result($keysindex_array); while(list($kname, $columns) = @each($index)){ $dp .= ",\n"; $colnames = implode($columns,","); if($kname == 'PRIMARY'){ $dp .= "\tPRIMARY KEY ($colnames)"; } else{ if (substr($kname,0,6) == 'UNIQUE'){ $kname = substr($kname,7); } $dp .= " KEY $kname ($colnames)"; } } $dp .= "\n);\n\n"; $rows = mysql_query("SELECT * FROM $table"); $numfields=mysql_num_fields($rows); while ($row = mysql_fetch_array($rows)){ $dp .= "INSERT INTO $table VALUES("; $fieldcounter=-1; $firstfield=1; while (++$fieldcounter<$numfields){ if(!$firstfield){ $dp .=' , '; } else{ $firstfield=0; } if (!isset($row[$fieldcounter])){ $dp .= 'NULL'; } else{ $dp .= "'".mysql_escape_string($row[$fieldcounter])."'"; } } $dp .= ");\n"; } mysql_free_result($rows); return $dp; } $table = mysql_query("SHOW tables"); unset($temp_buffer); while ($row = mysql_fetch_array($table)){ if (!empty($row[0])){ $temp_buffer = dumptb($row[0])."\n\n\n"; } } $file_name = date("d-m-Y").".txt"; // path chmod 777 $filehandle = fopen($file_name,'w'); $result = mysql_query("SHOW tables"); while ($row = mysql_fetch_array($result)){ fwrite($filehandle,dumptb($row[0])."\n\n\n"); } fclose($filehandle); ?> estou depurando a parada pra zipar mais ta f*** esse codigo ele gera o txt com a base de dados fornecida Compartilhar este post Link para o post Compartilhar em outros sites
nolfolk 0 Denunciar post Postado Janeiro 17, 2006 aki funcionou sem problemas, valew Fabyo :D/> Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Janeiro 18, 2006 Eu fiz um sistema de backup novo ,bem melhor <? set_time_limit(0); $con = @mysql_connect("localhost", "usuario", "senha"); mysql_select_db("banco"); $tabelas = mysql_query("SHOW TABLE STATUS"); while($l = mysql_fetch_assoc($tabelas)) { $tabela[$l["Name"]] = $l["Auto_increment"]; } $backup = ""; $tabelas = mysql_list_tables('banco'); while($tab = mysql_fetch_row($tabelas)) { $backup .= "--\n-- Estrutura da Tabela $tab[0]\n--\n\nDROP TABLE IF EXISTS $tab[0];\n"; $res = mysql_query("SHOW CREATE TABLE $tab[0]"); while($all = mysql_fetch_assoc($res)){ $str = $all['Create Table']; $str = str_replace("`", "", $str); $str = str_replace(" ", "\t", $str); if(!empty($tabela[$tab[0]])) { $backup .= $str." AUTO_INCREMENT=".$tabela[$tab[0]].";\n\n"; } else { $backup .= $str.";\n\n"; } } $data = mysql_query("SELECT * FROM $tab[0]"); if(mysql_num_rows($data)) { $backup .= "--\n-- Extraindo dados da tabela $tab[0]\n--\n\n"; } while($dt = mysql_fetch_row($data)){ $backup .= "INSERT INTO $tab[0] VALUES('$dt[0]'"; for($i=1; $i<sizeof($dt); $i++) { $backup .= ", '$dt[$i]'"; } $backup .= ");\n"; } $backup .= "\n----------------------------------------------------------\n\n"; } echo "<pre>$backup</pre>"; ?> nao sei se tem gente que precisa mas da pra fazer um sitema bem completo onde a pessoa escolheria o banco num combo e teria mais informações sobre o banco como tamanho, tipo etc... ah corrigi as funções do primeiro topico, o problema era nas antigas tags de PHP que tinha dado pau dai auterou o script por isso dava erro Compartilhar este post Link para o post Compartilhar em outros sites
Buscopan 0 Denunciar post Postado Fevereiro 8, 2006 Sei que é chato ... mas ... alguém tem algo assim em ASP ???Não encontrei ... Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Fevereiro 8, 2006 Buscopan qual base de dados você usa no asp ? Compartilhar este post Link para o post Compartilhar em outros sites
dudubroering 0 Denunciar post Postado Fevereiro 8, 2006 este segundo script não funcionou aqui, o primeiro eu não testei.... Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in c:\sites\limainformatica\admin\robot\backup.php on line 13 flw Compartilhar este post Link para o post Compartilhar em outros sites
Leandro - xd 0 Denunciar post Postado Abril 1, 2006 Ele não achou resultado no database para ser exportado.. Compartilhar este post Link para o post Compartilhar em outros sites
Nelson Sousa 0 Denunciar post Postado Abril 9, 2006 PARABENS!!!O segundo script ficou muito bom. Muito mais organizado.Como eu sou iniciante, poderia me indicar como faço pra criar um .ZIP com ele? Compartilhar este post Link para o post Compartilhar em outros sites
Mario 0 Denunciar post Postado Maio 11, 2006 sera que tinha como comentar o script?gostaria de entender o que esta acontecendo e algo como$tabelas = mysql_query("SHOW TABLE STATUS");não sei oque esta fazendo o que é esse show......tb não entendi muito bem o que ele faz?primeiro da um drop e depois cria e insere? ou isso é só para mostrar a estrutura e ele não executa esses comandos???........e para criar o zip?(só testei o segundo) Compartilhar este post Link para o post Compartilhar em outros sites
fsphp 0 Denunciar post Postado Junho 21, 2006 SHOW TABLE STATUS, é um comando MYSQL para mostrar o "status" das tabelas. Compartilhar este post Link para o post Compartilhar em outros sites
Leandro Vieira Pinho 0 Denunciar post Postado Junho 21, 2006 Eu fiz um sistema de backup novo ,bem melhor <?set_time_limit(0);$con = @mysql_connect("localhost", "usuario", "senha");mysql_select_db("banco");$tabelas = mysql_query("SHOW TABLE STATUS");while($l = mysql_fetch_assoc($tabelas)) { $tabela[$l["Name"]] = $l["Auto_increment"];}$backup = "";$tabelas = mysql_list_tables('banco');while($tab = mysql_fetch_row($tabelas)) { $backup .= "--\n-- Estrutura da Tabela $tab[0]\n--\n\nDROP TABLE IF EXISTS $tab[0];\n"; $res = mysql_query("SHOW CREATE TABLE $tab[0]"); while($all = mysql_fetch_assoc($res)){ $str = $all['Create Table']; $str = str_replace("`", "", $str); $str = str_replace(" ", "\t", $str); if(!empty($tabela[$tab[0]])) { $backup .= $str." AUTO_INCREMENT=".$tabela[$tab[0]].";\n\n"; } else { $backup .= $str.";\n\n"; } } $data = mysql_query("SELECT * FROM $tab[0]");if(mysql_num_rows($data)) { $backup .= "--\n-- Extraindo dados da tabela $tab[0]\n--\n\n";} while($dt = mysql_fetch_row($data)){ $backup .= "INSERT INTO $tab[0] VALUES('$dt[0]'"; for($i=1; $i<sizeof($dt); $i++) { $backup .= ", '$dt[$i]'"; } $backup .= ");\n";} $backup .= "\n----------------------------------------------------------\n\n";}echo "<pre>$backup</pre>";?>nao sei se tem gente que precisa mas da pra fazer um sitema bem completo onde a pessoa escolheria o banco num combo e teria mais informações sobre o banco como tamanho, tipo etc...ah corrigi as funções do primeiro topico, o problema era nas antigas tags de PHP que tinha dado pau dai auterou o script por isso dava erroComo adicionar o script de ZIP neste novo código?Um abraço. Compartilhar este post Link para o post Compartilhar em outros sites
ViTiNhO 0 Denunciar post Postado Junho 21, 2006 No meu pc apache2 php5 e mysql-server-5 apareceu isto!!!Warning: Cannot modify header information - headers already sent by (output started at /var/www/testing/backup/zip_lib.php:142) in /var/www/testing/backup/zip_lib.php on line 12Warning: Cannot modify header information - headers already sent by (output started at /var/www/testing/backup/zip_lib.php:142) in /var/www/testing/backup/zip_lib.php on line 13Warning: Cannot modify header information - headers already sent by (output started at /var/www/testing/backup/zip_lib.php:142) in /var/www/testing/backup/zip_lib.php on line 14Warning: Cannot modify header information - headers already sent by (output started at /var/www/testing/backup/zip_lib.php:142) in /var/www/testing/backup/zip_lib.php on line 15Warning: Cannot modify header information - headers already sent by (output started at /var/www/testing/backup/zip_lib.php:142) in /var/www/testing/backup/zip_lib.php on line 16PKMais o importante e que fez o backup, muito bom parabens!!! Compartilhar este post Link para o post Compartilhar em outros sites