Backup Base Dados MySQL Com PHP

A 15 de Outubro de 2009, categoria MySQL, PHP, SGBD, por Carlos Gonçalves
4

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 (4 votos, média: 4,75 num total de 5)
Loading ... Loading ...
Tags:
 

Enviar ficheiros entre FTP’s, utilizando PHP

A 30 de Janeiro de 2009, categoria FTP, PHP, por Carlos Gonçalves
0

Enviar ficheiros para o servidor por FTP é um requisito essencial de qualquer programador ou web designer.

Evidentemente, todos nós utilizamos bons clientes FTP, como o Ws_ftp e FireFTP, mas e quanto à automatização do FTP?

Podemos usar PHP para enviar ficheiros utilizando FTP de um servidor para outro.
Vou mostrar como:

$conexao= ftp_connect($server);

$login = ftp_login($conexao, $ftp_utilizador, $ftp_password);

if (!$conexao|| !$login) { die('Tentativa de Conexão Falhada!'); }

$upload = ftp_put($conexao, $dest, $source, $mode);

if (!$upload) { echo 'Upload para o FTP Falhou!'; }

ftp_close($conexao);

Obviamente, a primeira etapa, é a de conectar com o outro servidor.
Assim que a ligação é criada, passamos as informações necessárias para o login, como o utilizador e a password.
Quando estiver conectado, usamos o ftp_put(), que é a função responsável para enviar o ficheiros. Apenas isto!

Com que finalidade usamos isto?

Podes simplesmente criar um cron para criar um backup de ficheiros e enviar para um servidor externo.


Muito FracoFracoRazoávelBomMuito Bom (Nenhum voto por enquanto)
Loading ... Loading ...
Tags:
 

Procuras alguma coisa?

Utiliza o formulário abaixo para pesquisares no meu site:


Ainda não encontraste o que procuravas? Deixa um comentário num post ou contacta-me para que te possa ajudar!

Links de Interesse!

Links por mim recomendados...

Arquivos

Ordenado de forma cronológica...