Backup de base MYSQL pelo PHP
Publicado por mauro 09/02/2009
[ Hits: 22.258 ]
Este script é usado para gerar um backup de um banco de dados MySQL.
A saída ainda é compactada em formato ZIP, a classe que utilizei para compactar o aquivo foi a zip.lib.php.
<?php
// dados de conexão com o banco de dados
$usuario = "usuariodobanco";
$senha = "senhadobanco";
$dbname = "basededados";
// conectando ao banco
   mysql_connect("localhost",$usuario,$senha) or die(mysql_error());
   mysql_select_db($dbname) or die(mysql_error());
// gerando um arquivo sql. Como?
// a função fopen, abre um arquivo, que no meu caso, será chamado como: nomedobanco.sql
// note que eu estou concatenando dinamicamente o nome do banco com a extensão .sql.
   $back = fopen($dbname.".sql","w");
// aqui, listo todas as tabelas daquele banco selecionado acima
   $res = mysql_list_tables($dbname) or die(mysql_error());
//Em seguida, vamos, verificar quais são as tabelas daquela base, lista-las, e em um laço for, vamos mostrar cada uma delas, e resgatar as funções descriação da tabela, para serem gravadas no arquivo sql mais adiante.
// resgato cada uma das tabelas, num loop
      while ($row = mysql_fetch_row($res)) {
   $table = $row[0]; 
// usando a função SHOW CREATE TABLE do mysql, exibo as funções de criação da tabela, 
// exportando também isso, para nosso arquivo de backup
   $res2 = mysql_query("SHOW CREATE TABLE $table");
// digo que o comando acima deve ser feito em cada uma das tabelas
while ( $lin = mysql_fetch_row($res2)){ 
// instruções que serão gravadas no arquivo de backup
      fwrite($back,"\n#\n# Criação da Tabela : $table\n#\n\n");
      fwrite($back,"$lin[1] ;\n\n#\n# Dados a serem incluídos na tabela\n#\n\n");
//Teremos então de pegar os dados que estão dentro de cada campo de cada tabela, e abri-los também para serem gravados no nosso arquivo de backup.
// seleciono todos os dados de cada tabela pega no while acima
// e depois gravo no arquivo .sql, usando comandos de insert
   $res3 = mysql_query("SELECT * FROM $table");
      while($r=mysql_fetch_row($res3)){ 
   $sql="INSERT INTO $table VALUES (";
//Agora vamos pegar cada dado do campo de cada tabela, e executar tarefas como, quebra de linha, substituição de aspas, espaços em branco, etc. Deixando o arquivo confiável para ser importado em outro banco de dados.
// este laço irá executar os comandos acima, gerando o arquivo ao final, 
// na função fwrite (gravar um arquivo)
// este laço também irá substituir as aspas duplas, simples e campos vazios
// por aspas simples, colocando espaços e quebras de linha ao final de cada registro, etc
// deixando o arquivo pronto para ser importado em outro banco
   
 for($j=0; $j<mysql_num_fields($res3);$j++)
              {
                  if(!isset($r[$j]))
                      $sql .= " '',";
                  elseif($r[$j] != "")
                        $sql .= " '".addslashes($r[$j])."',";
                  else
                      $sql .= " '',";
              }
                        $sql = ereg_replace(",$", "", $sql);
                      $sql .= ");\n";
      fwrite($back,$sql);
      }
   }
}
//E finalmente, vamos fechar (internamente, no servidor) o arquivo que geramos, dando um nome para o mesmo, e gerando o arquivo que será então disponibilizado para download.
// fechar o arquivo que foi gravado
fclose($back);
// gerando o arquivo para download, com o nome do banco e extensão sql.
   $arquivo = $dbname.".sql";
   ob_start();
  require('zip.lib.php');
  //Gera o objeto
   $zipfile = new zipfile($dbname.".zip",'', '');
  //Adiciona o diretorio corrente com todos arquivos
  //$zipfile->addDirContent('./');
  //Adicionado o aquivo criado
  $zipfile->addFileAndRead($arquivo);
  //Saida do aquivo compactado
  echo $zipfile->file();
?>
Função para criação de grid (tabela) dinâmico
Sistema que simula bd com arquivo TXT
Classe de conexao com banco de dados mysql
Nenhum comentário foi encontrado.
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
E aí? O Warsaw já está funcionando no Debian 13? [RESOLVIDO] (13)
copiar library para diretorio /usr/share/..... su com Falha na a... (1)
Problema em SSD ao dar boot LinuxMint LMDE FAYE 64 (3)









