Using ssh and rsync for backup

From Pruonckk.org

Autor: Pruonckk le Punk

Conteúdo

Prefácio

Backup é sempre uma questão importante quando nós falamos de servidores, e uma maneira segura de fazer isso é usar o ssh ou o rsync para fazer estas cópias, o grande problema, é normalmente a questão da senha , então neste tutorial, vou demonstrar como eliminar este problema

Instalando o ssh

No debian, o ssh ja vem instalado por padrão, mas caso não o tenha instalado, pode instalar o pacote

ssh 

pelo synaptic, ou então usar o apt

apt-get install ssh

Gerando chaves

Você pode gerar a chave para o root, ou para outro usuário, basta executar o comando, com o usuário que você desejar

ssh-keygen -t rsa

Você receberá a seguinte resposta

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 

Apenas pressione enter aqui A proxima pergunta será a frase que servirá como senha para o ssh

Enter passphrase (empty for no passphrase): 

No nosso caso, vamos deixar esta opão em branco, e pressionar enter

Enter same passphrase again: 

Enter novamente

Então receberemos a seguinte saida

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
6c:dd:0c:20:a8:13:ce:94:cf:6e:96:e8:85:f3:57:a8 root@sua_maquina

bom, então aqui ele gerou duas chaves, uma é a id_rsa que é nossa chave privada e a outra, é a id_rsa.pub que é nossa chave publica

Copiando as chaves

Agora precisamos copiar a chave publica para o servidor que irá conter os arquivos Entre no seu diretorio pessoal

cd ~/.ssh

de um ls, e você verá os arquivos lá

-rw-------  1 root root  887 2006-01-09 10:09 id_rsa
-rw-r--r--  1 root root  224 2006-01-09 10:09 id_rsa.pub
-rw-r--r--  1 root root 1581 2006-01-08 12:23 known_hosts

Copia então o arquivo id_rsa.pub para o diretório do usuario que voce quer no caso, supondo que voce usasse o root, seria o seguinte

scp id_rsa.pub root@192.168.0.10:/root/.ssh/authorized_keys

Authorized_keys são as chaves das maquinas que podem se conectar usando chaves invés de senhas comuns

Testando a conexão

Agora tente dar um ssh para a maquina onde voce jogou a chave, fazendo isso você verá que ele não pediu senha para entrar no sistema

Instalando o rsync

instale o pacote rsync pelo synatpic ou pelo apt

apt-get install rsync

Imaginando o ambiente

Ok, agora para ilustrar melhor, vamos imaginar um ambiente temos um servidor que é o 192.168.0.10 e nossa maquina é 192.168.0.5 no servidor 192.168.0.10 nós temos um diretorio /dados e na maquina 192.168.0.5 nós temos um diretorio /backup

Copiando arquivos

Para fazermos a cópia do /dados usando o rsync, nós executaremos o seguinte comando

rsync -a 192.168.0.10:/dados/ /backup/ 

Com isso, ele irá gerar uma lista de tudo que existe no diretório dados para o diretório /backup da nossa maquina 192.168.0.5

Incrementando a copia

Bom, vamos supor que queremos copiar o diretorio dados para o diretorio backup todo dia, e ter backups, compactados dos ultimos 7 dias O melhor modo de fazer isso é usando um script, porém vamos por partes

Criando uma estrutura de diretórios

No diretório /backup, vamos criar mais alguns diretórios, serão eles

mkdir /backup/tmp
mkdir /backup/semana

Criando o Script

Abaixo, vou colocar um script simples, que faria exatamente oque queremos Voce pode nomealo de backup.sh ou qq outro nome Não esqueça de dar permissão de execução nele ( chmod +x arquivo )

#!/bin/bash

# Script de backup (exemplo debianfordummies.org)

echo "Iniciando copia dos arquivos"
echo "#######################################"

rsync -a 192.168.0.10:/dados /backup/tmp > /var/log/backup.log

echo "Compactando os arquivos"
echo "#######################################"

cd /backup/semana

tar -czvf dados-`date +%d.%m.%Y`.tar.gz /backup/tmp/ >> /var/log/backup.log

echo "Limpando diretório /backup/tmp"
echo "#######################################"

rm -vrf /backup/tmp/* >> /var/log/backup.log

echo "Procurando arquivos com mais de 7 dias para remoção"
echo "#######################################"

find /backup/semana/ -name "*.tar.gz" -ctime +7 -exec rm -vrf {} >> /var/log/backup.log \;

echo "Enviando logs para o administrador"
echo "#######################################"

cat /var/log/backup.log | mail -s Backup-`date +%d.%m.%Y` voce@seudominio.com

Colocando no CRON

Vamos imaginar que nosso script é o /usr/bin/backup.sh Então vamos fazer a seguinte chamada no cron

crontab -e

Esse comando vai abrir o editor para o usuario editar os agendamentos Vamos imaginar, que voce quer o backup feito, todos os dias, as 3 da manha

0 03 * * * /usr/bin/backup.sh

Com esta linha ele irá executar todo dia, as 3 da manha, mas vamos supor que você só quer executar aos domingos as 14:00

00 14 * * 7 /usr/bin/backup.sh


Finalizando

Pronto, com isso, você ja pode elaborar suas rotinas de backup, isso é apenas um exemplo de como você pode estar fazendo isso

Voltar

Ferramentas pessoais
Inutilidades