Ir para conteúdo

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
https://xtibia.com/forum/topic/111317-arquivadobackup-autom%C3%A1tico-com-mysql-e-php/
Compartilhar em outros sites

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

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.

  • 1 month later...
  • 7 years later...
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.
Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...