Ir para o conteúdo
nuno_couto

Backup da base de dados

Mensagens Recomendadas

nuno_couto    0
nuno_couto

Viva.

Queria criar um script em que fosse possivel, na área de administração (que faria parte do script), criar uma cópia de segurança da base de dados (sem que o administrador do site tivesse acesso ao phpmyadmin).

Não faço ideia por onde começar.

Alguem consegue ajudar?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pedrotuga    31
pedrotuga

n precisas de script nenhum... podes ir ao phpmyadmin ou a qq outro front end e fazer um backup para um ficheiro .sql... está lá a opção algures...

... se o que queres é fazer isso automaticamente todos os dias... então tens k usar:

o utilitario DUMP do mysql

e um cronojob

poe isto no google:

mysql dump

depois isto:

cronojob

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

Criei este código a uns tempos acho que te pode ajudar:

                <?
                //kingless 2006

                $host = "localhost";
                $user = "usuario";
                $senha = "senha";
                $db = "nome_da_bd";

                $con = mysql_connect($host,$user,$senha);
                mysql_select_db( "$db" , $con);
                $query = "SHOW DATABASES";
                $query = mysql_query($query) or die (mysql_error());
                $data = date( "d-m-y" );
                while ($row = mysql_fetch_array( $query )){
                $nome = $row[0];
                $Arquivo = $nome."-".$data;
                $backup = `mysqldump --host=$host --user=$user --password=$senha $db > $Arquivo.sql`;
                }
                $arquivo = "mysql_".$data;
                $backup = `tar -cvzf $arquivo.tar.gz *.sql`;
                $backup = `rm *.sql`;
                ?>

EDIT: Código Alterado!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    79
M6

Criei este código a uns tempos acho que te pode ajudar:

                <?
                //kingless 2006

                $host = "localhost";
                $user = "usuario";
                $senha = "senha";
                $db = "nome_da_bd";

                $con = mysql_connect($host,$user,$senha);
                mysql_select_db( "$db" , $con);
                $query = "SHOW DATABASES";
                $query = mysql_query($query) or die (mysql_error());
                $data = date( "d-m-y" );
                while ($row = mysql_fetch_array( $query )){
                $nome = $row[0];
                $Arquivo = $nome."-".$data;
                $backup = `mysqldump --host=$host --user=$user --password=$senha $db > $Arquivo.sql`;
                }
                $arquivo = "mysql_".$data;
                $backup = `tar -cvzf $arquivo.tar.gz *.sql`;
                $backup = `rm *.sql`;
                ?>

EDIT: Código Alterado!

Muito porreiro. ;) Tenho uma coisa idêntica mas em shell script que no fim copia isso para uma tape.

Explica-me uma coisa que não compreendi bem: o valor da variável $backup é redefinido várias vezes sem que os comandos sejam executados, estou errado ou falhei alguma coisa?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

Os valores (Comandos Linux)  da variável $backup  são executados um de cada vez enquanto são redefinidos... Para não ter que criar uma variável para cada valor.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    79
M6

Os valores (Comandos Linux)  da variável $backup  são executados um de cada vez enquanto são redefinidos... Para não ter que criar uma variável para cada valor.

Eu percebi essa ideia, não vi foi a invocação à execução de cada um dos comandos, e isso é que eu não compreendi...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
M6    79
M6

aha... Os comandos são executados com isto  `  `  em vez de ser com exec ou system..

Ah, não sabia que isso executava comandos...

Já aprendi qualquer coisa hoje. ;)

Obrigado.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
kingless    0
kingless

Já agora fica aqui o script de backup que fiz em "Bash Script"...

#!/bin/bash

# kingless 2006 #

echo "Qual é o Host da Base de Dados ?"
read HOST
echo "Qual é o Usuario da Base de Dados ?"
read USER
echo "Qual é a Senha da Base de Dados ?"
read SENHA
echo "Qual é a Base de Dados ?"
read BD

mysqldump --host=$HOST --user=$USER --password=$SENHA $BD >> "$BD.sql"

tar -cvzf "backup_$BD.tar.gz" $BD.sql

É só guardar o código num ficheiro exemplo "backup.sh" e depois fazer chmod u+x backup.sh  e executar ./backup.sh

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
nuno_couto    0
nuno_couto

kingless

Em relação ao código que colaste, basicamente se eu colocar este código num ficheiro .php, ele vai gerar um ficheiro .sql, depois vai comprimir esse arquivo para .tar.gz, e depois apaga todos os ficheiros .sql da pasta?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade