quarta-feira, 7 de setembro de 2011

Backup no Postgresql com PHP

Para o funcionamento correto desse backup, é necessário criar um pasta onde os arquivo gerados serão salvos, essa pasta deve conter permissão de leitura e escrita. Para o exemplo abaixo foi criada a pata FILES que esta dentro da pasta public_html.

Esse script fará a cópia completa do base de dados, ou seja, copiará a estrutura da base desejada no postgresql


$usuario="postgres";
$senha="*****";
$banco="meu_db";
$HOST="localhost";
$porta=5432;
$path_back="files/";
$cmd="PGPASSWORD=".$senha." pg_dump -i -h ".$HOST." -p ".$porta." -U ".$usuario." -F c -b -v -f '".$path_back.$banco.".sql' ".$banco;

// Executa o comando pg_dump que esta na variável cmd
shell_exec($cmd);

// Compacta o arquivo gerado pelo camando para tar.gz
shell_exec("tar -zcf ".$path_back.$banco.date("Ymd").".tar.gz ".$path_back."*");

// As linhas abaixo forçam o download do arquivo
$link = $path_back.$banco.date("Ymd").".tar.gz";
header ("Content-Disposition: attachment; filename=".$banco.date("Ymd").".tar.gz");
header ("Content-Type: application/octet-stream");
header ("Content-Length: ".filesize($link));
readfile($link);

// Apaga o arquivo gerado
shell_exec("rm -rf ".$path_back."*");


É isso ai, caso tenha alguma dúvida é só posta-la para que possamos ajudar.

Até a próxima.

Nenhum comentário:

Postar um comentário