Backup com php, usando mysql_dump

Publicado por CalRaiden© 19/02/2009

[ Hits: 11.382 ]

Homepage: www.calraiden.com.br

Download mysqldump.php




Estava procurando um bom script para realizar um backup via php no mysql através do mysql_dump. E como encontrei bastante dificuldade, acabei montando um próprio com bases nos scripts que encontrei.

A única restrição que faria no seu uso, seria sobre  "Allowed memory", se o banco for muito grande, é bem provável que esse erro seja mostrado e precise alterar o php.ini.

O script foi projetado para rodar via linha de comando, mas pode ser via navegador, o que não recomendaria.

  



Esconder código-fonte

#!/usr/bin/php -q 
<?php
/**
 * Calraiden
 * @author Claudionor S.
 * @category   Backup Mysql
 * @package    calraiden
 * @copyright  Copyright (c) 2002-2009 Calraiden. (http://wwwexe.inf.ufsc.br/~claudionor or www.calraiden.com.br)
 * @license    GPL
 * @version    $Id: mysqldump.php 7 2008-12-16 10:58:39Z Claudionor S. $
 */


/*Definindo váriveis que serão usada durante execução do script*/
$host = "localhost";//host/endereço do banco
$user = "root";//usuário acesso
$password = "";//password do usuário
$dir_temp = "/tmp";//diretório temporário
$dir_backup = "/home/zeca";//diretório que irá guardar os backups
$database = null;//especificando uma base para backup
/*Pegando data atual que será usada no final dos arquivos (year month day hour minute seconds )*/
$date = date("YmdYHis");
/*INICIANDO SCRIPT*/
/*Conectando*/
$mycon = mysql_connect($host,$user,$password);

if(empty($database))//Caso não tenha sido especificado uma base, selecionar todas
{
   /*Selecionando todas as bases existentes*/
   $sql = "SHOW DATABASES";
   $databases = mysql_query($sql,$mycon) or die .mysql_error();
   /*Caso tenha existar bases, Inicnando loop*/
   if($databases){
      while($row = mysql_fetch_array($databases)){
         /*Nome do banco*/
          $name = $row[0];
          /*Nome do arquivo que será gerado*/
          $filename = "{$name}_{$date}";
          /*Montando comando*/
         $mysqldump = createSQL($host,$user,$password,$name,$dir_temp,$filename);             
          /*Executando comando*/
          execute($mysqldump);
      }
   }
}else { //backup somente de um banco
   /*Nome do arquivo que será gerado*/
   $filename = "{$database}_{$date}";
    /*Montando comando*/
   $mysqldump = createSQL($host,$user,$password,$database,$dir_temp,$filename);             
    /*Executando comando*/
    execute($mysqldump);    
}   
/*Nome do arquivo de backup*/
$file = "bkp_mysql_{$date}";
/*Comando compactar arquivo no linux*/
$tar = "tar -cvzf $dir_backup/$file.tar.gz {$dir_temp}/*.sql";
/*Executando comando*/
execute($tar);
/*Comando remover arquivos temporarios*/
/*WARNING: Esse comando pode causar danos no seu sistema operacional.  
   Remove (unlink) the FILE(s).
      -f, --force
         ignore nonexistent files, never prompt
      --version
          output version information and exit
      --preserve-root
            do not remove ‘/’ (default)
*/
$rm = "rm -fv --preserve-root {$dir_temp}/*.sql";
execute($rm);
/**
 * Apenas montar o comando mysql_dump
 *
 * @param String $host, O servidor MySQL
 * @param String $user, O nome de usuário
 * @param String $password, A senha
 * @param String $name, nome do banco que será feito o backup
 * @param String $dir_temp, caminho diretório temporário que será salvo o arquivo
 * @param String $filename, nome do arquivo que será criado
 * @return String $cmd, comando montando para ser executado
 */
function createSQL($host,$user,$password,$name,$dir_temp,$filename)
{
   return $mysqldump = "mysqldump --host={$host} --user={$user} --password={$password} --databases {$name}
 > {$dir_temp}/{$filename}.sql";   
}
/**
 * Executa um comando via shell, caso não consigar executar o comando parar o script
 * @param String $command, O comando que será executado
 */
function execute($command)
{
if(!shell_exec($command))//error, parar script
   exit;
else//success, exibir comando
   echo "{$command}\n";      
}
?>

Scripts recomendados

Criando um Portal de Notícias baseado em PHP/MySQL

eveQuery2: interação com banco de dados

Arquivo PHP para configuração de acesso a banco mySQL e execução de operações

Sistema php com Sqlite

Trabalhando com PHP + Interbase(Firebird)


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts