Ir para conteúdo

[Arquivado]Backup Automático Com Mysql E Php


noobinhu

Posts Recomendados

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.

Link para o comentário
Compartilhar em outros sites

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

Link para o comentário
Compartilhar em outros sites

Muito bom brother!

 

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

 

Abraços.

Editado por VaL
Link para o comentário
Compartilhar em outros sites

  • 2 months later...
  • 1 year later...

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.

 

Pode explicar melhor passo a passo! onde coloca este script? como deixar fazendo o backup diario?

 

Valeu!

Link para o comentário
Compartilhar em outros sites

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.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 7 years later...
Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...