Posts Tagged ‘ssh’

Backup automático do postgres + rsync para outra máquina

outubro 15th, 2009

Aqui vou exemplificar a solução que usamos para fazer backup diário dos nossos bancos de dados, este backup é armazenado em um servidor fora do país. para fazer a sincronia, usamos o rsync.

1) Configurando login automático via chaves digitais no nosso servidor de armazenamento

Primeiro você tem que gerar as chaves no seu servidor de banco, com o usuário do banco de dados, no meu caso é o usuário “postgres”.

Você será perguntado por uma senha, deixe em branco e confirme:

$ su postgres
$ ssh-keygen -t dsa

Agora você terá sua chave, copie-a para seu servidor que irá armazenar o backup

$ scp ~/.ssh/id_dsa.pub user@server_bkp:~/

Agora acesse seu servidor via ssh e adicione a chave pública na lista de chaves autorizadas do ssh

$ ssh user@server_bkp
$ cat ~/id_dsa.pub >> ~/.ssh/authorized_keys

Volte para o seu servidor de banco no usuario do postgres e teste:

$ ssh user@server_bkp

Se você conseguiu acessar o server de backup sem digitar senha, continue no passo 2, senão, de uma revisada. qualquer dúvida comente!.

2) Instalando o rsync e script de backup

Para instalar o rsync no debian é bem simples:

$ aptitude install rsync

No nosso banco de dados os backups são feitos diariamente as 19 horas, e usamos a pasta /backup para armazena-los:

$ mkdir /backup
$ touch /backup/backup.sh
$ chmod +x /backup/backup.sh
$ chown postgres:postgres /backup -R

Agora, edite o arquivo backup.sh e coloque o conteúdo:

#!/bin/bash
 
PASTA=$(date +%m%Y)
DATA=$(date +%Y%m%d)
DIA=$(date +%d)
 
mkdir /backup/$PASTA
mkdir /backup/$PASTA/$DIA
 
LIST=$(psql -l | awk '{ print $1}' | grep -vE '^-|^\(|^List|^N[o|a]me|template[0|1]')
for d in $LIST
do
        pg_dump -i -h 127.0.0.1 -p 5432 -U postgres -F t -b -f "/backup/$DATA-$d.backup" $d
        tar -zcf /backup/$PASTA/$DIA/$DATA-$d.tar.gz /backup/$DATA-$d.backup
        rm /backup/$DATA-$d.backup
        /usr/bin/rsync -avzh --delete --progress --update /backup/ user@server_bkp:~/
done

faça um teste e rode o script com o user do postgres:

$ su postgres
$ /backup/backup.sh

Se tudo ocorrer bem, é só adicionar no crontab para executar quando você quiser:

$ su
$ pico /etc/crontab

e adicionar:

0 19    * * *   postgres    /backup/backup.sh

Reinicie o cron e o backup será feito todos os dias as 19 horas.

Navegando onde não é possível navegar, usando SSH

abril 1st, 2009

No trabalho o acesso a qualquer site é bloqueado durante o horario de almoço e após o expediente, hoje pesquisando uma solução com um amigo, descobrimos os Tuneis SSH.

Para criar um túnel desses você precisa ter acesso a alguma maquina em algum lugar (fora do firewall ou proxy de sua rede que bloqueia a navegação) via SSH, eu possuo contas no dreamhost.com e crio o túnel passando por lá.

o comando para criação do tunel no linux é: ssh -D [usuario]@[servidor], exemplo:

ssh -D 9999 eu@meuservidor.com

Após digitar a sua senha, o tunel estará criado e funcionando perfeitamente, só que para navegar é necessário configurar os programas (Firefox, IM) para usarem este proxy.

No firefox a opção fica em Editar->Preferências->Avançado->Rede->Conexão->Configurar, chegando na tela, marque a opção de “Configuração Manual do Proxy”, no campo SOCKS, coloque o seu IP (127.0.0.1) e a porta 9999 (definida no exemplo acima) e tudo estará funcionando.

Como eu uso isso sempre, eu configurei meu pc para se autenticar sem pedir senha e coloquei o comando no rc.local:

/usr/bin/screen -DmUS proxy /usr/bin/ssh -D 9999 [usuario]@[servidor] &

Para finalizar, pelo Putty no Windows é possivel criar tuneis quase que da mesma maneira, é só ir na opção de Tuneis dele e preencher os dados do seu servidor e da porta que você deseja usar

Espero que tenha sido útil.