• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

nuno_couto

Backup da base de dados

14 mensagens neste tópico

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

epa... lá está uma coisa que eu nunca usei... como é que é isso.. isto `` envia um comando para a shell?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim isso.. e depois podes fazer o download do ficheiro  .tar.gz

0

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