NO

[Arquivado]Backup Automático Com Mysql E Php

Por noobinhu, 14 de abr. de 2009 em Noticias - Arquivo

script
11
5.5k
noobinhuN
14 de abril de 2009 às 16:14

Bom, todo servidor e site que tenha conteúdo deseja ter um backup diário do mesmo, ou semanal que seja, eu fiz um script em PHP que ajuda muito nesta requisição.

 

Ele gera um backup do banco de dados configurado e automaticamente salva em um arquivo este backup, permitindo você ter uma cópia diária do seu banco de dados sem precisar ficar mexendo em nada.

 

Primeiro meu script:

<?php

// configs

$host = 'localhost';

$user = 'root';

$pass = '';

$db = 'information_schema';

$print_result = true; //true to print able, false to print disable

$save_backup = true; //true to save able, false to save disable

$backup_file_name = "automatic_backup"; //where will be saved if $save_backup is true

$backup_file_format = "sql"; // format (for example, automatic_backup_140409.sql)

// end configs

 

$con = mysql_connect($host,$user,$pass);

mysql_select_db($db);

 

$tables = mysql_list_tables($db);

$backup = '-- Yunie Auto Backup System

-- Database: '.$db.'

-- Date: '.date("d/m/y", time()).'';

 

$backup .= '

 

 

';

 

while ($tables_result = mysql_fetch_assoc($tables))

{

$tablename = $tables_result['Tables_in_'.$db.''];

 

 

$backup .= '--

-- `'.$tablename.'` table

--

';

$backup .= 'DROP TABLE IF EXISTS `'.$tablename.'`;

CREATE TABLE IF NOT EXISTS `'.$tablename.'`

(

';

$fieldname = '';

$fields_array = array();

$table_fields = mysql_query("SHOW COLUMNS FROM `".$tablename."`");

$primary_key = '';

while ($fields_result = mysql_fetch_assoc($table_fields))

{

 

if (!empty($fieldname))

{

$backup .= ',

';

}

 

 

$fieldname = $fields_result['Field'];

$fields_array[] = $fieldname;

$type = $fields_result['Type'];

$primary = '';

$increment = '';

if ($fields_result['Extra'] == 'auto_increment')

{

$increment = ' AUTO_INCREMENT';

}

$null = 'NULL';

if ($fields_result['Null'] == 'NO')

{

$null = 'NOT NULL';

}

 

if ($fields_result['Key'] == 'PRI')

{

$primary_key = $fieldname;

}

 

$default = $fields_result['Default'];

if ($default && empty($increment))

{

$default = ' DEFAULT \''.$default.'\'';

}

else

{

$default = '';

}

$backup .= '`'.$fieldname.'` '.$type.' '.$null.''.$increment.''.$default.'';

 

}

 

if (!empty($primary_key))

{

$backup .= ',

PRIMARY KEY (`id`)';

}

 

$backup .= '

);';

$fields_list = '(';

$field_num = 1;

foreach(array_keys($fields_array) as $keys)

{

$fields_list .= '`'.$fields_array[$keys].'`';

 

if ($field_num != sizeof($fields_array))

{

$fields_list .= ', ';

}

 

$field_num++;

}

 

$fields_list .= ')';

 

 

$rows_fields = mysql_query('SELECT * FROM `'.$tablename.'`');

echo mysql_error();

 

$inserts = mysql_num_rows($rows_fields);

if ($inserts > 0)

{

$backup .= '

 

INSERT INTO `'.$tablename.'` '.$fields_list.' VALUES

';

 

$insert_num = 0;

 

while ($rows_result = mysql_fetch_assoc($rows_fields))

{

$insert_num++;

$field_num = 1;

$backup .= '(';

foreach(array_keys($rows_result) as $keys)

{

$value = $rows_result[$keys];

$value = str_replace("'","''",$value);

if (!is_numeric($value))

{

$backup .= "'".$value."'";

}

else

{

$backup .= $value;

}

if ($field_num != sizeof($rows_result))

{

$backup .= ',';

}

 

$field_num++;

}

 

$backup .= ')';

 

if ($insert_num == $inserts)

{

$backup .= ';';

}

else

{

$backup .= ',

';

}

 

}

 

}

 

$backup .= '

 

';

 

}

if ($print_result == true)

{

echo '<textarea rows="30" cols="100" wrap="OFF">'.$backup.'</textarea>';

}

 

if ($save_backup == true)

{

$file = fopen($backup_file_name.'_'.date("dmy", time()).'.'.$backup_file_format.'', "w+");

fwrite($file, $backup);

fclose($file);

}

?>

 

Configure em negrito, e faça o que quiser com este arquivo :>

 

Para torná-lo automático você precisa de um pouco mais de trabalho no seu site, usando include de certo em certo tempo quando um usuário visitá-lo ele checa quando foi feito o último backup, se o tempo for > que ele daria então o include executando o script sem o usuário perceber. Já que ele pode não exibir nada, dependendo da configuração.

 

Façam bom uso,

Yunie.

Heroi do BarzimH
14 de abril de 2009 às 16:17

Cada vez me surpreendo mais contigo, cê é bom hein fi..apesar de eu não entender nada disso. ;p

14 de abril de 2009 às 16:24

pow mete bala nessa porra hehe Parabens ai continue assim meurmao voce e scripter mesmo me passa seu msn ai

noobinhuN
14 de abril de 2009 às 20:23

ah só lembrando que pra uma segurança melhor, ali no nome do arquivo, você pode adicionar um diretório junto...

seguindo o exemplo:

dir/file

DiogoD
16 de abril de 2009 às 14:04

Muito bom brother!

 

Só poderia ter colocado usando a tag [ CODE ], para manter a identação que o quote come.

 

Abraços.

Editado Abril 16 por VaL

noobinhuN
17 de abril de 2009 às 18:39

eu não uso identação :>

17 de abril de 2009 às 21:47

Poutz cara tuh eh froidz !!!

 

...Excelente simplesmente é a melhor definição !!!

 

Grato pelo post !!

 

ty ;D

3 meses depois...
06 de julho de 2009 às 15:53

Já resolveu o problema do importar?

1 ano depois...
gutaohG
14 de dezembro de 2010 às 15:36

Olá. sou leigo nesse assunto,

Tem como você explicar melhor como uso passo a passo?

 

seria uma grande gentileza, até porque vejo que não é apenas eu que tenho essa duvida.

 

onde coloco esse script e como automatiza-lo?

 

Agradeço pela compreensão.

2 meses depois...
03 de fevereiro de 2011 às 11:26

BOOOA !

7 anos depois...
StigalS
25 de abril de 2018 às 16:28
Esta noticia foi arquivada.
Este tópico está fechado e foi movido para Noticia - Arquivo.

+ Caso tenha atualizações você poderá criar outro tópico.