Pessoal, corrigi a pagina de script ( correções importantes )
Postei para no caso de não conseguirem importar o backup esta ai a configuração correção.
Agradeço ao Alan e ao Cleito, pois o script de um e a correção do outro me ajudaram a exportar o backup e somente após isto foi possível identificar alguns erro e corrigi-los para a importação com sucesso.
Qualquer coisa estamos ai!
Vlw!
<?php
include('Connections/DAITAKE_DATA.php');
//auto_backup.php
// configuração do seu banco
$host = $hostname_DAITAKE_DATA; //Seu host, normalmente localhost
$user = $username_DAITAKE_DATA; //Seu usuario, normalmente root
$pass = $password_DAITAKE_DATA; //Sua senha, normalmente em branco ou root
$db = $database_DAITAKE_DATA; // Seu Banco de Daddos
$print_result = true; //true para imprimir aba, false para não imprimir
$save_backup = true; //true para salvar, false para não salvar
$backup_file_name = $db; //Nome do arquivo, se $save_backup estiver ativado - caso ficara o nome do Banco de Dados
$backup_file_format = "sql"; // formato da extensão (Banco de dados_07-08-2011.sql)
// fim configuração do banco
$con = mysql_connect($host,$user,$pass);
mysql_select_db($db);
//Pega as datas e calcula o tempo do última backup
$nova_data = date("Y-m-d");
$calcula = strtotime($nova_data . "0 days"); //Aqui vc especifica intervalo entre o Backup, para diario especificar 0 days.
$calcula2=date('Y-m-d', $calcula);
$verifica = "select * from data_backup";
$exec_verifica = mysql_query($verifica);
while ($row = mysql_fetch_array($exec_verifica))
{
$id = $row["id"];
$data = $row["ultimo_backup"];
}
//Verifica se a data do último backup é igual ao calculado pelo intervalo
//Se for igual quer dizer que o backup deve ser efetuado
if ($calcula2>$data) //correção: alterei de == ( igual ) para > ( maior ), pois caso o intervalo calculado seja maior ao
// especificado será efetuado o backup
//obs: para diario deixar os sinais == ( igual )
{
//Lista as tabelas de seu banco
$tables = mysql_list_tables($db);
$backup = '-- Yunie Auto Backup System - Adaptado por Alan Maia -
[email protected]-- Atualizado por Elielder Oliveira ( TagaNet Info )-
[email protected]-- Crédito: Alan Maia / Cleiton /
-- -----------------------------------------------------------
-- Servidor: '.$host.'
-- Banco de Dados: '.$db.'
-- Data: '.date("d/m/y", time()).'
--
-- ------------------------------------------------------------
';
$backup .= '';
//Rotina para criar arquivo com as instruções SQL
while ($tables_result = mysql_fetch_assoc($tables))
{
$tablename = $tables_result['Tables_in_'.$db.''];
$backup .= '---- Estrutura da tabela `'.$tablename.'` --
-- ----------------------------------------------------------
';
$backup .= 'DROP TABLE IF EXISTS `'.$tablename.'`;
CREATE TABLE IF NOT EXISTS `'.$tablename.'`
(';
$fieldname = '';
$fields_array = array();
$table_fields = mysql_query("SHOW COLUMNS FROM `".$tablename."`");
$primary_key = '';
while ($fields_result = mysql_fetch_assoc($table_fields))
{
if (!empty($fieldname))
{
$backup .= ',
';
}
$fieldname = $fields_result['Field'];
$fields_array[] = $fieldname;
$type = $fields_result['Type'];
$primary = '';
$increment = '';
if ($fields_result['Extra'] == 'auto_increment')
{
$increment = ' AUTO_INCREMENT';
}
$null = 'NULL';
if ($fields_result['Null'] == 'NO')
{
$null = 'NOT NULL';
}
if ($fields_result['Key'] == 'PRI')
{
$primary_key = $fieldname;
}
$default = $fields_result['Default'];
if ($default && empty($increment))
{
$null = ''; // correção: para não imprimir NULL quando houver default
$default = "DEFAULT '".$default."'"; //correção: imprimir os dados de default dentro de aspas simples
}
else
{
$default = '';
}
$backup .= '`'.$fieldname.'` '.$type.' '.$null.''.$increment.''.$default.'';
}
if (!empty($primary_key))
{
$backup .= ',
PRIMARY KEY (`'.$primary_key.'`)'; // correção: imprime o nome da chave primaria, pois estava como id
}
$backup .= '
);';
$fields_list = '(';
$field_num = 1;
foreach(array_keys($fields_array) as $keys)
{
$fields_list .= '`'.$fields_array[$keys].'`';
if ($field_num != sizeof($fields_array))
{
$fields_list .= ', ';
}
$field_num++;
}
$fields_list .= ')';
$rows_fields = mysql_query('SELECT * FROM `'.$tablename.'`');
echo mysql_error();
$inserts = mysql_num_rows($rows_fields);
if ($inserts > 0)
{
$backup .= '
INSERT INTO `'.$tablename.'` '.$fields_list.' VALUES
';
$insert_num = 0;
while ($rows_result = mysql_fetch_assoc($rows_fields))
{
$insert_num++;
$field_num = 1;
$backup .= '(';
foreach(array_keys($rows_result) as $keys)
{
$value = $rows_result[$keys];
$value = str_replace("'","''",$value);
if (!is_numeric($value))
{
$backup .= "'".$value."'";
}
else
{
$backup .= $value;
}
if ($field_num != sizeof($rows_result))
{
$backup .= ',';
}
$field_num++;
}
$backup .= ')';
if ($insert_num == $inserts)
{
$backup .= ';';
}
else
{
$backup .= ',
';
}
}
}
$backup .= '
';
}
//Se no config estiver true visualiza num text area as instruções SQL
if ($print_result == true)
{
//Aqui vc pode imprimir num text area as instruções SQL pra mim não é necessário
//por isso está comentado para visualizar é só descomentar
//echo '<textarea rows="30" cols="100" wrap="OFF">'.$backup.'</textarea>';
}
//Se noconfig estiver true salva em arquivo .sql as instruções SQL
if ($save_backup == true)
{
//Aqui vc define o diretório onde o arquivo deve ser salvo
//Pode ser escrito como c:/pasta/bkp/
//Pode ser qualquer unidade inclusive na rede basta a pasta ter permissão
//Não esqueça de terminar o diretoírio com a barra /
$dir = "SQL/";
$file = fopen($dir.$backup_file_name.'_'.date("d-m-Y", time()).'.'.$backup_file_format.'', "w+");
//correção: o mome sera banco de dados_dia-mes-ano.sql ( 00-00-0000 )
fwrite($file, $backup);
fclose($file);
}
//Aqui aconselho a criar uma tabela para gravar a data do ultimo backup e atualizar para data atual
//Assim quando entrar no sistema a rotina irá verificar se há necessidade de backup
//de acordo com o cálculo no inicio do código
$update ="UPDATE `data_backup` SET `ultimo_backup` = '$nova_data' WHERE `id` ='$id'";
$exec_update = mysql_query($update);
$msg = "Backup Realizado com sucesso!";
}
else
{
// Variavel $data recebendo uma data no padrão (dd/mm/aaaa)
$data = $data;
// Variavel aux2 fazendo o explode separando pelo caracter '/'
$aux2 = explode('-',$data);
// Exibe a data no formato para inserir no MySQL (aaaa-mm-dd)
if($data > 0){
$databr = $aux2[2]."/".$aux2[1]."/".$aux2[0];
}
$msg = "Não foi necessário realizar o Backup! O ultimo Backup foi realizado ".$databr."!";
}
?>