Leia as instruções de uso desse script no arquivo bkpmysql.php.";
if(!$dbname)
{
return "O nome do banco de dados precisa ser informado.".$signerro;
}
if(!$local and $local != 0)
{
return "O local onde o arquivo deve ser salvo precisa ser informado.".$signerro;
}
@$con = mysql_connect($host,$usuario,$senha);
if(!$con)
{
return "Erro ao conectar o servidor MySQL, é necessário configurar os dados de conexão no arquivo bkpmysql.php, linhas 76 a 79
;\nVerifique abaixo o erro reportado pelo servidor:
;\n".mysql_error();
}
@$sel = mysql_select_db($dbname);
if(!$sel)
{
return "Erro ao selecionar o banco de dados: \"$dbname\"
;\nVerifique abaixo o erro reportado pelo servidor:
;\n".mysql_error();
}
$fcont = "# Criando banco de dados : $dbname;\n\n";
$fcont .= "CREATE DATABASE IF NOT EXISTS $dbname;\n";
@$res = mysql_list_tables($dbname); // Pega a lista de todas as tabelas
if(!$res)
{
return "Não foi possível obter a lista de tabelas no banco de dados, verifique suas permissões no servidor MySQL.;\n
Verifique abaixo o erro gerado pelo servidor:;\n
".mysql_error().$signerro;
}
while($row = mysql_fetch_row($res))
{
$table = $row[0]; // cada uma das tabelas
@$res2 = mysql_query("SHOW CREATE TABLE $table");
if(!$res2)
{
return "Não foi possível obter a estrutura das tabelas no banco de dados, verifique suas permissões no servidor MySQL.;\n
Verifique abaixo o erro gerado pelo servidor:;\n
".mysql_error().$signerro;
}
while($lin = mysql_fetch_row($res2))
{ // Para cada tabela
$fcont .= "# Criando tabela: $table;\n";
$create_table = str_replace("`","",$lin[1]);
$comando = substr($create_table,0,13);
if (IncluirDB==true):
$comando .= "IF NOT EXISTS ".$dbname.".".substr($create_table,13,strlen($create_table));
else:
$comando .= "IF NOT EXISTS ".substr($create_table,13,strlen($create_table));
endif;
$fcont .= "$comando;\n# Dump de Dados;\n";
@$res3 = mysql_query("SELECT * FROM $table");
if(!$res3)
{
return "Não foi possível selecionar os dados da tabela $table.;\n
Verifique abaixo o erro gerado pelo servidor:;\n
".mysql_error().$signerro;
}
while($r=mysql_fetch_row($res3))
{ // Dump de todos os dados das tabelas
$ct = count($r);
for($i = 0;$i < $ct;$i ++)
{
$r[$i] = addslashes($r[$i]);
}
if (IncluirDB==true):
$sql="INSERT IGNORE INTO $dbname.$table VALUES ('";
else:
$sql="INSERT IGNORE INTO $table VALUES ('";
endif;
$sql .= implode("','",$r);
$sql .= "');\n";
$fcont .= $sql;
}
} //FIM DO WHILE DOS REGISTROS
}
// Criação do arquivo no servidor (se informado um endereço na chamada
// da função no 2º parâmetro diferente de 0
if($local != "0")
{
if ($gzipado)
{
$arquivo = $local."/$dbname.sql.gz";
@$back = gzopen($arquivo, "w"); // Abre com compressão máxima
if(!$back)
{
return "Ocorreu um erro ao criar o arquivo de backup dos dados no servidor, verifique o local informado e as permissões para esse diretório.".$signerro;
}
@$escreve = gzwrite($back,$fcont);
if(!$escreve)
{
return "Não foi possível escrever no arquivo de backup no servidor.;\n
Possíveis causas para isso incluem problemas com o servidor ou com o script.;\n
Tente novamente e se o problema persistir, contate o administrador.";
}
gzclose($back);
// Calibrar $fcont com o conteúdo zipado
$fp = fopen($arquivo,"r");
$fcont = fread($fp, filesize($arquivo));
fclose($fp);
$fcont = imap_binary($fcont);
}
else
{
$arquivo = $local."/$dbname.sql";
@$back = fopen($arquivo,"w");
if(!$back)
{
return "Ocorreu um erro ao criar o arquivo de backup dos dados no servidor, verifique o local informado e as permissões para esse diretório.".$signerro;
}
@$escreve = fwrite($back,$fcont);
if(!$escreve)
{
return "Não foi possível escrever no arquivo de backup no servidor.;\n
Possíveis causas para isso incluem problemas com o servidor ou com o script.;\n
Tente novamente e se o problema persistir, contate o administrador.";
}
fclose($back);
}
$nome_do_arquivo = ($gzipado) ? "$dbname.sql.gz" : "$dbname.sql";
}
// Verifica o endereço de e-mail
if($email)
{
if(!(ereg("^([0-9,a-z,A-Z]+)([.,_]([0-9,a-z,A-Z]+))*[@]([0-9,a-z,A-Z]+)([.,_,-]([0-9,a-z,A-Z]+))*[.]([0-9,a-z,A-Z]){2}([0-9,a-z,A-Z])?$",$email)))
{
return "O endereço de e-mail informado é inválido, o arquivo de backup foi gerado e está localizado no servidor.".$signerro;
}
$boundary = "XYZ-" . date(dmyhms) . "-ZYX";
$message = "--".$boundary."\n";
$message .= "Content-Transfer-Encoding: 8bits\n";
$message .= "Content-Type: text/html; charset=iso-8859-1\n\n";
$message .= "";
$message .= "Backup do banco de dados $dbname em arquivo anexo.
";
$message .= "Para restaurar o backup vc pode executar o arquivo em uma query SQL, linha de comando ou a partir de um frontend para mysql.";
$message .= "
BKP MySQL by Juarez Fiuza Junior
j.fast@tutopia.com.br
";
$message .= "
Implementação do Gzip by Rodrigo Lopes
rod.001@ig.com.br
";
$message .= "
Implementação do Banco Leandro Vieira
levisants@yahoo.com.br
";
$message .= "\r\n\r\n";
$subject = "Backup do banco de dados $dbname";
$message .= "--".$boundary."\n";
$message .= "Content-Type: text/plain\n";
$message .= "Content-Disposition: attachment; filename=\"$dbname.sql\" \n";
$message .= $fcont."\n";
$message .= "--".$boundary."--\r\n";
$to = $email;
$nomefrom = "MySQL";
$emailfrom = "seu-email@seu-provedor.com.br";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: $nomefrom <$emailfrom>\r\n";
$headers .= "Reply-to: <$emailfrom>\r\n";
$headers .= "Return-path: <$emailfrom>\r\n";
$headers .= "X-Sender: <$emailfrom>\r\n";
$headers .= "X-Mailer: Proj/PHP\r\n";
$headers .= "X-Priority: 3\r\n";
$headers .= "Content-type: multipart/mixed; boundary=\"".$boundary."\"\r\n";
if(!(mail($to, $subject, $message, $headers)))
{
return "Ocorreu um erro ao tentar enviar o e-mail, se um local foi informado o arquivo de backup foi gerado e está localizado no servidor.".$signerro;
}
}
return "sucesso";
}
/* -----------------------------------------------------------------------------
Fim do Script
+++++++++++++++++++++++++++++++++++++++++++
+:: Script desenvolvido por: ::+
+:: Juarez Fiuza Junior (12/11/03) ::+
+:: j.fast@tutopia.com.br ::+
+:: ::+
+:: Implementação do GZIP ::+
+:: Rodrigo Lopes (30/04/06) ::+
+:: rvl@ufrj.br ::+
+:: ::+
+:: Implementação de Banco de Dados ::+
+:: Leandro Vieira (04/05/05) ::+
+:: levisants@yahoo.com.br ::+
+++++++++++++++++++++++++++++++++++++++++++
----------------------------------------------------------------------------- */
?>