Uma das tarefas mais importantes de qualquer programador precisa de fazer com frequência é o Backup à sua base de dados MySQL. Em muitos casos, a Base de Dados é o que dirige a maior parte do site.
Embora a maioria dos web hostings fazem backups diários da Base de Dados dos clientes, porém, em alguns casos, depender deles para fazer backups e disponibilizar-nos, sem qualquer custo é no mínimo arriscado. É por isso que criei uma função de backup de dados que possa utilizar sempre que quiser.

backup_bd('localhost','utilizador','password','blog');

/* Fazer Backup da BD ou só de uma Tabela */
function backup_bd($host,$utilizador,$password,$nome,$tabelas = '*')
{

	$link = mysql_connect($host,$utilizador,$password);
	mysql_select_db($nome,$link);

	//obter todas as tabelas
	if($tabelas == '*')
	{
		$tabelas = array();
		$resultado = mysql_query('SHOW TABLES');
		while($coluna = mysql_fetch_row($resultado))
		{
			$tabelas[] = $coluna[0];
		}
	}
	else
	{
		$tabelas = is_array($tabelas) ? $tabelas: explode(',',$tabelas);
	}

	foreach($tabelas as $tabelas)
	{
		$resultado = mysql_query('SELECT * FROM '.$tabelas);
		$num_campos = mysql_num_fields($resultado);

		$return.= 'DROP TABLE '.$tabelas.';';
		$coluna2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$tabelas));
		$return.= "\n\n".$coluna2[1].";\n\n";

		for ($i = 0; $i < $num_campos; $i++)
		{
			while($coluna = mysql_fetch_row($resultado))
			{
				$return.= 'INSERT INTO '.$tabelas.' VALUES(';
				for($j=0; $j<$num_campos; $j++)
				{
					$coluna[$j] = addslashes($row[$j]);
					$coluna[$j] = ereg_replace("\n","\\n",$coluna[$j]);
					if (isset($coluna[$j])) { $return.= '"'.$coluna[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_campos-1)) { $return.= ','; }
				}
				$return.= ");\n";
			}
		}
		$return.="\n\n\n";
	}

	//guarda ficheiro
	$ficheiro = fopen('bd-backup-'.time().'-'.(md5(implode(',',$tabelas))).'.sql','w+');
	fwrite($ficheiro,$return);
	fclose($ficheiro);
}

Claro que vais precisar de fornecer as credenciais de login da Base de Dados, bem como o conjunto de tabelas que queres fazer o backup. Se colocares “*” ou nenhuma tabela, será feito um full backup da Base de Dados. O script faz o resto!

Mais vale não arriscar quando o site é de estrema importância. Faz backups frequentes ou podes ter que pagar o preço mais tarde!


Muito FracoFracoRazoávelBomMuito Bom (3 votos, média: 4,67 num total de 5)
Loading ... Loading ...