segunda-feira, abril 12

Estudos de Linux - Agendamento de tarefas com Cron

Continuando o último post, agora vou mostrar como colocar o script de backup em execução periódica e automática usando o Cron.
Será necessário editar a lista de tarefas do cron, normalmente em /etc/crontab:
sudo nano /etc/crontab
Agora escolhemos a frequência e o horário da execução do backup. No meu caso, colocarei o backup para ser executado todas as sexta-feiras ao meio dia em ponto.
No arquivo crontab, existe uma ordem para escrever um novo agendamento:
MINUTO HORA DIA MES DIA_DA_SEMANA USUARIO COMANDO, sendo que:
  • Em MINUTO é possível colocar um número de 0 a 59;
  • Em HORA é possível colocar um número de 0 a 23;
  • Em DIA é possível colocar um número de 0 a 31;
  • Em MES é possível colocar um número de 1 a 12, onde 1 é Janeiro e 12 é Dezembro;
  • Em DIA_DA_SEMANA é possível colocar um número de 1 a 7, onde 1 é Segunda e 7 é Domingo;
  • Em USUARIO informa-se o usuário que vai executar o comando.
  • Em COMANDO informa-se o comando que deseja executar.
Se estiver usando o primeiro script (backuper.sh), adicione ao final do arquivo a linha:
# Backup todas as Sexta-feiras ao meio-dia
0 12 * * 5 root /caminho/até/backuper.sh
Se estiver usando o script pgclone, adicione ao final do arquivo a linha:
# Backup todas as Sexta-feiras ao meio-dia
0 12 * * 5 root pgclone
Agora salve (CTRL+O) o arquivo e aguarde até que o backup seja efetuado!

Até a próxima!

quarta-feira, abril 7

Estudos de Linux - Backup de bases de dados Postgre

Recentemente passei por maus bocados depois que um servidor passou por problemas no sistema de arquivos que causaram perca de dados recentes, depois disso resolvi usar uma ferramenta que criasse uma cópia do servidor inteiro, para recuperá-lo caso seja necessário.

Pré-requisitos:

  • libnotify para exibir um balão de alerta quando o backup estiver em andamento (Não obrigatório).

    Instale pelo console com sudo apt-get install libnotify-bin ou clicando aqui caso esteja usando o firefox no ubuntu.

  • postgresql-client para ter a ferramenta pg_dumpall que vamos usar no script (Obrigatório).

    Instale pelo console com sudo apt-get install postgresql-client ou clique aqui.

O Script:

#!/bin/sh
pgu="postgres" #O usuário do banco de dados
pgh="localhost" #O endereço do servidor
destin="/home/usuario/backup/" #O local onde será feito o backup
vYear=$(date +%Y) #O Ano
vMonth=$(date +%m) #O Mês
vDay=$(date +%d) #O Dia
vH=$(date +%H) #A Hora
vM=$(date +%M) #O minuto
fileName="auto-$pgh-$vDay.$vMonth.$vYear.$vH.$vM.backup" #O nome do arquivo do backup
fileError="auto-$pgh-$vDay.$vMonth.$vYear.$vH.$vM.error" #O nome do arquivo do backup
icon="/usr/share/icons/gnome/scalable/actions/gtk-refresh.svg" #O icone da notificação
startMsg="Está sendo efetuado um backup do servidor $pgh para o arquivo $destin$fileName!" #Mensagem de inicio
endMsgSuccess="O backup do servidor $pgh para o arquivo $destin$fileName foi efetuado com sucesso!" #Mensagem de término com sucesso
endMsgFail="Houve uma falha no backup do servidor $pgh para o arquivo $destin$fileName." #Mensagem de término com falha

#Iniciando...

echo $startMsg
if [ $(which notify-send) ]; then
notify-send "Backup Postgre" "$startMsg" -i $icon
fi

#Copiando...
pg_dumpall -U $pgu -h $pgh > $destin$fileName 2>$destin$fileError
s=$?
if [ $s != 0 ]; then
    echo $endMsgFail
    if [ $(which notify-send) ]; then
        notify-send "Backup Postgre" "$endMsgFail" -i $icon
    fi
    error=$(cat $destin$fileError)
    zenity --error --window-icon="$icon" --title="Backup Postgre" --text="$endMsgFail\nDetalhes:\n$error"
    exit 1;
else
    echo $endMsgSuccess
    if [ $(which notify-send) ]; then
        notify-send "Backup Postgre" "$endMsgSuccess" -i $icon
    fi
    zenity --notification --window-icon="$icon" --title="Backup Postgre" --text="$endMsgSuccess"
    exit 0;
fi

Salve esse arquivo como backuper.sh (ou o nome que achar melhor) e depois altere as suas permissões para execução.
chmod +x backuper.sh
Ai é só executá-lo pelo prompt usando ./backuper.sh.

No próximo post vou ensinar como fazer o script ser executado automáticamente e periodicamente.

Até mais.

Update

Dei uma tunada no script e agora ele faz clonagem de servidores Postgre
No terminal, execute os comandos:
wget http://dl.dropbox.com/u/4917466/pgclone
sudo mv pgclone /bin/pgclone
sudo chmod 777 /bin/pgclone
Agora quando for usar basta digitar no terminal um dos comandos abaixo
pgclone Faz uma cópia do servidor localhost com o usuário postgres
pgclone -u usuario -h host Faz uma cópia do servidor "host" com o usuario "usuario"
pgclone --clone --clone-user usuario --clone-host host Faz uma clonagem do servidor localhost no servidor "host"

segunda-feira, abril 5

Estudo de Linux e PHP: Instalando o PHP dbx no Ubuntu

Estou trabalhando um projeto e perdi muito tempo tentando criar uma classe genérica de acesso a diversos bancos de dados. Depois de um passeio pela documentação do PHP (http://www.php.net/manual/pt_BR/) encontrei a extensão dbx para abstração de banco de dados. Ela permite acessar todos os bancos de dados de forma padronizada. O problema é que ela foi movida para o repositório PECL e não vem no pacote oficial. Para instalá-la no ubuntu é muito fácil:
Primeiro é preciso ter as ferramentas de desenvolvimento do PHP php5-dev e a extensão do pear php-pear que podem ser instaladas via terminal com sudo apt-get install php-pear php5-dev.
Depois basta digitar o comando pecl install -f dbx.
Agora temos o dbx instalado mas ainda desabilitado, para habilitá-lo navegue até o diretório /etc/php5/conf.d e crie um arquivo chamado dbx.ini dentro dele coloque "extension=dbx.so" sem as aspas.
Agora é só reiniciar o Apache e pronto, o dbx está instalado e habilitado!
sudo /etc/init.d/apache2 restart
Pretendo postar meus estudos de PHP com essa e outras extensões.
Até breve!