sexta-feira, abril 06, 2007

SCRIPT DE BACKUP UTILIZANDO O RSYNC

Encontrei esses scripts no vivaolinux e alterei para as minhas necessidades. Espero que sirvam para mais alguém.

Antes de tudo, instale o rsync no servidor e no cliente (sudo apt-get install rsync)
No servidor, devem ser criados os arquivos /etc/rsyncd.conf e /etc/rsyncd.secrets (ambos com permissões "chmod 600", ou seja, só permissão de leitura, apenas para o root.
------
#
# /etc/rsyncd.conf
#
# Usuário sob o qual o rsync irá rodar
uid=root
# Grupo sob o qual o rsync irá rodar
gid=root
# Arquivo de log
log file = /var/log/rsyncd.log
# Módulo para o servidor-um
[servidor-um]
# Caminho onde fica o espaço para este computador
path = /backup/servidor-um
# Usuário(s) autorizado(s)
auth users = servidor-um-backup
# Arquivo de usuários senhas
secrets file = /etc/rsyncd.secrets
# Permitir gravação
read only = false
# Não incluir este módulo quando solicitada a listagem
list = false
# IP(s) ou rede permitidos a conectar
# hosts allow = 192.168.13.2
# Log de Transferências
transfer logging = yes
# Formato do arquivo de log
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
# Módulo para o servidor-dois.
[usuario1]
path = /backup/usuario1
auth users = usuario1
secrets file = /etc/rsyncd.secrets
read only = false
list = false
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.

[usuario2]
path = /backup/usuario2
auth users = usuario2
secrets file = /etc/rsyncd.secrets
read only = false
list = false
transfer logging = yes
log format = %t: host %h (%a) %o %f (%l bytes). Total %b bytes.
---
---
#
# /etc/rsync.secrets
#
# Usuários e senhas que se conectarão ao servidor
# Formato:
# :
servidor-um-backup:senhaUM
usuario1:usuario1
usuario2:usuario2
---
Com isso, estamos "dizendo" no arquivo /etc/rsyncd.conf que os arquivos dos computadores serão salvos no diretório /backup/"nome do computador"
Também informamos o nome do usuário que fará a conexão rsync para envio dos arquivos.
No arquivo /etc/rsync.secrets, constam apenas os nomes dos computadores:senha. Eu utilizei esses nomes para facilitar o entendimento. Use os que achar mais conveniente.
Cada computador que enviará os arquivos, deve ter um "bloco" informando onde ficarão seus arquivos "backapeados" e qual usuário será utilizado para a conexão.
É só copiar o exemplo.

Com isso, o servidor está configurado e pronto para receber os arquivos dos clientes.

Nos clientes, os arquivos a serem criados são o backup.sh e o rsyncd.pass.

O arquivo rsyncd.pass conterá APENAS a senha. Ele vai ser "chamado" pelo script de backup, e vai informar a senha do usuário, dessa maneira, não será preciso digitar nada além do nome do script de backup. Esse arquivo, fica no home do usuário, com permissão de somente leitura para o dono. Os outros usuários não devem ter nenhum acesso a esse arquivo.

O script de backup, foi alterado, para atender o seguinte requisito: O usuário não tem permissão de ROOT na máquina, e só fará backup do seu diretório HOME.
Segue script de backup:
---
#!/bin/bash
#
# /sbin/scripts/backup.sh
#
# Execução do rsync
RSYNC='/usr/bin/rsync -pavR --delete --password-file='$HOME/'rsyncd.pass'
# Módulo referente ao cliente
MODULO="`whoami`"
# Usuário deste módulo
USUARIO="`whoami`"
# IP ou Hostname do servidor de backup
SERVIDOR="192.168.0.123"
# Destino da sincronização
DEST="$USUARIO@$SERVIDOR::$MODULO/"
# Log do script
LOG="$HOME/.backup.log"
# Diretórios a serem "backup`ados"
DIRETORIOS="$HOME"
# Grava a data/hora de inicio do backup
echo -e "\nInicio do backup - `date`\n" >> $LOG
# Realiza copia dos diretórios
for i in $DIRETORIOS; do
$RSYNC $i $DEST >> $LOG 2>&1
done
# Grava a data/hora de fim do backup
echo -e "\nFim do backup - `date`\n" >> $LOG
---
Note que o usuário pode mudar os arquivos a serem copiados, mudando a variável DIRETORIOS. Também será criado um arquivo de log chamado .backup.log no home desse usuário.

Espero ter ajudado, de alguma maneira.
Grande abraço a todos.

Nenhum comentário: